Versuchen Sie es mit der folgenden:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Wenn eine Standardaktion bereits gesetzt ist (Ihr), können Sie rufen zuerst:
getPackageManager().clearPackagePreferredActivities(getPackageName());
Wenn die Standardaktion nicht verkaufen, Sie kann es nicht programmgesteuert löschen, was Sie tun können, ist zu überprüfen, ob andere App als Standard eingestellt ist und eine Nachricht anzeigen.
private boolean isMyLauncherDefault() {
PackageManager localPackageManager = getPackageManager();
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.HOME");
String str = localPackageManager.resolveActivity(intent,
PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;
return str.equals(getPackageName());
}
Als Abhilfe bei anderen App als Standard festgelegt ist, können Sie erstellt ein fake
Hause, installieren Sie es (dies wird Forse das System die Standard-App löschen) und dann deinstallieren ...
Manifest .xml
<activity
android:name="FakeHome" android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
FakeHome.java
public class FakeHome extends Activity {
}
Irgendwo
if(!isMyLauncherDefault()) {
PackageManager p = getPackageManager();
ComponentName cN = new ComponentName(Activity.this, FakeHome.class);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
Dieser Code wird nicht den Dialog öffnet sich, wenn ein Standard-Launcher ist bereits festgelegt. –
Haben Sie das jemals zur Arbeit gebracht? – portfoliobuilder
Der Parameter 'filters' von' getPreferredActivities() 'ist ein Ausgabeparameter. Das Hinzufügen eines Filterelements zur Liste vor dem Anruf hat keine Auswirkungen. –