簡體   English   中英

Android App在意圖發布時被殺死

[英]Android App Getting Killed on Intent Launch

我有一個隱藏在啟動器中的應用程序。 現在,我想從撥號器中打開應用程序。 所以我有一個BroadcastReceiver,我在這里處理事情。

1)首先我顯示該應用程序,

ComponentName componentName = new ComponentName(context,
                SplashActivity.class);
        context.getPackageManager().setComponentEnabledSetting(
                componentName,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);

2)然后啟動一個Intent,

Intent launcher = new Intent(context, SplashActivity.class);
                    launcher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    context.startActivity(launcher);

3)然后我再次隱藏了該應用程序,

ComponentName componentName2 = new ComponentName(context,
                SplashActivity.class);
        context.getPackageManager().setComponentEnabledSetting(
                componentName2,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);

問題

Intent啟動成功,但該應用在幾秒鍾后被殺死。 但是,如果我啟動SplashActivity以外的任何其他活動,則不會發生此問題。 問題是什么,如何解決?

您可以在Android清單中使用<activity-alias>標簽進行啟動器活動。 更改清單中的啟動器活動,如下所示:-

        <activity-alias
            android:name="com.watever.SplashActivityAlias"
            android:targetActivity="com.watever.SplashActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity-alias>

在顯示和隱藏應用程序的代碼中,只需使用別名即可,就像上面的清單別名一樣,清單中使用的別名是SplashActivityAlias,因此在顯示和隱藏應用程序的兩種情況下都使用SplashActivityAlias而不是SplashActivity。 通過執行上述操作,您可以使用別名使用setComponent EnabledSetting方法隱藏您的應用程序圖標,並且可以使用撥號程序啟動您的主要活動(即啟動活動)

對於隱藏的應用程序

ComponentName componentName2 = new ComponentName("com.packagename",
                "com.packagename.HideAppActivity");
        context.getPackageManager().setComponentEnabledSetting(
                componentName2,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM