Hirdetés

Új hozzászólás Aktív témák

  • domel
    tag

    Helló! Továbbra is próbálkozok ezzel a mindenek feletti ablakkal, de van egy olyan érzésem, hogy megint a huawei szivat. Valaki lécci próbálja ki a lenti kódot nekem, a program azt vizsgálja, hogy a SYSTEM_ALERT_WINDOW engedélyt megkapom-e

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.canDrawOverlays(this)) {
    Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
    Uri.parse("package:" + getPackageName()));
    startActivityForResult(intent, 5469);
    }
    }
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{
    "android.permission.SYSTEM_ALERT_WINDOW"
    },
    1);
    }
    }
    @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
    case 1:
    boolean engedelyek = true;
    int rekLength = grantResults.length;
    if (rekLength > 0) {
    for (int rekI = 0; rekI < rekLength; rekI++)
    if (grantResults[rekI] != PackageManager.PERMISSION_GRANTED) {
    Log.i("TTAG", "permission:" + permissions[rekI] + " Elutasítva!");
    engedelyek = false;
    }
    if (engedelyek==true)Toast.makeText(getApplicationContext(),"engedély megadva",Toast.LENGTH_SHORT).show();
    if (engedelyek==false)Toast.makeText(getApplicationContext(),"engedély elutasítva",Toast.LENGTH_SHORT).show();

    }
    break;
    }
    }

    }

    manifest-be
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    A program indításakor a beállításokba ugrik: Settings->Alkalmazások->Speciális->Megjelenítés más alkalmazás felett->programod neve->[bekapcsológomb]
    ott bekapcsolod az igen kapcsolót, majd kilépve onnan felugrik egy TOAST, hogy engedélyezve, vagy elutasítva. Erre az üzenetre lennék kiváncsi, na meg arra, hogy mi a telefonotok oprendszere (min.Marshmallow, lehetőleg kisebb mint Oreo, de az sem baj, ha valaki megnézi, hogy Oreo alatt megkapom-e az engedélyt)

    Hálás köszönet: Domel

    Na végre összejött az ablak, ami bármilyen applikáció felett fut.
    deklarációban:
    private WindowManager wm;

    onCreate:

    wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    addImageView(8);

    és
    private void addImageView(Integer i) {
    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_PHONE,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.TOP | Gravity.START;
    params.x=i;
    params.y=i;
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View popupView = inflater.inflate(R.layout.rere, null); //RelativeLayout
    wm.addView(popupView, params);
    TextView titi= popupView.findViewById(R.id.zizi);
    titi.setText("szöveg átír");
    }

    rere.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="left"
    android:id="@+id/o2element1"
    android:padding="0dp"
    android:background="#4F77A0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:text="próba 1"
    android:id="@+id/zizi"
    />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:text="próba 2"
    android:id="@+id/zizi2"
    />
    </LinearLayout>

    Ahhoz hogy működjön, két dolog kell (másfél dolog)
    1. engedélyezni kell az app-nak, hogy más appok felett lehessen: settings>alkalmazások>speciális>megjelenés más alkalmazások felett>programunk>kapcsoló bekapcsol
    Akár programból is odarepíthetjük a felhasználót a beállítások menübe, mert az engedélyt neki kell megadni, de olvastam valamit, hogy a play-ről telepítve valamilyen feltételnek megfelelve ez akár ki is kerülhető
    2. ha Oreo vagy magasabb az oprendszer, akkor külön engedély kell neki:
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    Most hogy már ezt is tudom, fogalmam nincs mire fogom használni :C

Új hozzászólás Aktív témák