Android, создание новой задачи, когда вредоносная активность, вызываемая из приложения, переопределяет onBackPressed и активирует ее основное действие - PullRequest
0 голосов
/ 13 июля 2020

Есть 2 Android Приложения

SEV1_Alice:

Манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sev1_alice">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

SEV1_Mallory:

Манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sev1_mallory">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main2Activity">
            <intent-filter>
                <action android:name="BOB2"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Поток: вызов SEV1_Alice из неявной активности вызова приложения BOB2:

Intent intent = new Intent("BOB2");
startActivity(intent);

Вызывается активность Мэллори.

Теперь есть одна задача и стек задач, как показано ниже

Задача № 5579 со следующим стеком: Mallory .Main2Activity, Alice MainActivity - ROOT activity.

Это приложение торгового центра заменяет метод onBackPressed:

 public void onBackPressed() {
        super.onBackPressed();
        Intent intent = new Intent(Main2Activity.this, MainActivity.class);
        startActivity(intent);
    }

}

Теперь спинка прижата. Приложение Mallory активирует его MainActivity, как указано выше:

Теперь создается новая задача:

Task # 5580 со следующим стеком: Mallory MainActivity - ROOT activity

Предыдущая задача остается только с Алисой в стеке.

Задача № 5579 Алиса MainActivity - ROOT активность.

Запуск активности Мэллори отключает приложение Мэллори из задачи, из которой она была вызвана, и создайте для нее новую задачу №5580. почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...