Ich baue einen benutzerdefinierten Launcher für eine Kindermodus-App. Ich habe dieses link verfolgt, um eine Launcher-Auswahl zu erstellen, damit Benutzer meine App als Standardstartprogramm auswählen können.Erstellen Sie einen benutzerdefinierten Android-Launcher
Das Problem ist, wenn es einen Standard-Launcher in ihren Geräten gibt, funktioniert der Code in der obigen Verknüpfung nicht. Ich teste auf Zenphone5, Android 4.4.2. Ich habe einige Leute gesehen, die das gleiche Problem haben, Launcher Picker auf Android 4.4.2 zu erstellen.
Ich habe überall auf wie man einen Werfer Picker wie diese zu erstellen: Nester, iWawa. Wie können sie das tun?
AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ttb.com.kidmode">
<!-- Hide status bar -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- Hide the recent apps -->
<uses-permission android:name="android.permission.REORDER_TASKS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light">
<activity android:name=".activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.KidModeActivity"
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>
</application>
Launcher Picker Dialog erstellen:
if (isMyLauncherDefault() == false) { // enable fake home to force system to clear default
Log.v(">>>", "false");
ComponentName launcherActivity = new ComponentName(this, KidModeActivity.class);
getPackageManager().setComponentEnabledSetting(launcherActivity,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
goHome();
} else {
// Go home
goHome();
}
Durch Drücken der Home-Taste:
private void goHome() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
EDIT
Die ganze Geschichte ist: „Ich habe meine App öffnen, und klicken Sie auf eine Schaltfläche, um meine Launcher zu gehen -> nichts passiert (weil ein anderer Launcher als Standard gesetzt ist). Wenn ich diese Launcher-Einstellung öffne (Einstellungen -> Apps -> ..) und auf "Standard löschen" klicke, öffne meine App erneut, klicke auf die Schaltfläche, um zu meinem Launcher zu gelangen -> Der Dialog wird angezeigt. Ab jetzt funktioniert der Code gut“. Ich habe nicht Einstellung öffnen möchten, klicken Sie auf "Clear Defalt"
Beitrag Dein Code und dein Manifest, da ist wahrscheinlich etwas, was dir fehlt – njzk2
Hi @ njzk2 nur Code hinzugefügt. Bitte überprüfen Sie es – Liar
Also was passiert, wenn 'goHome' aufgerufen wird? – njzk2