[英]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.