2016-07-07 8 views
1

Ich verwende eine Funktion wie diese auf meine apps Symbol ändern, wenn der Benutzer dies wünscht:ändern App-Icon von Code - Android Studio Lauf funktioniert nicht mehr

public static void changeIcon(Activity activity, String addon) 
{ 
    // 1) adactivate all aliases 
    List<String> names = AppIconStyle.getNames(); 
    for (int i = 0; i < AppIconStyle.getNames().size(); i++) 
    { 
     ComponentName componentNameToDeactivate = new ComponentName(activity.getPackageName(), MainActivityMVP.class.getName() + "-" + names.get(i)); 
     activity.getPackageManager().setComponentEnabledSetting(componentNameToDeactivate, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
    } 
    // 2) activate selected alias 
    ComponentName componentNameToActivate = new ComponentName(activity.getPackageName(), MainActivityMVP.class.getName() + "-" + addon); 
    activity.getPackageManager().setComponentEnabledSetting(componentNameToActivate, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
} 

Das Problem ist, android Studio laufen tut immer versuchen, den Standard Alias ​​zu starten, die ich auf meinem Gerät geändert ... So ist es nicht die Standard-Aktivität nicht finden, da diese deaktiviert ist ...

Frage

ich weiß, dass ich ein definieren Aktivität in Android Studio r un config, aber eigentlich möchte ich eine config haben, die startet, welcher Alias ​​gerade auf meinem Gerät aktiv ist. Ist das irgendwie möglich? So etwas wie "das Manifest überprüfen und versuchen, eine Trägerrakete Aktivität nach dem anderen zu starten, bis man arbeitet" oder so ...

Antwort

-1

Add Berechtigungen in manifest:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 

Intent myLauncherIntent = new Intent(); 

myLauncherIntent .setClassName ("your.package.name", "YourLauncherActivityName"); myLauncherIntent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);

Intent intent = new Intent(); 

intent.putExtra (Intent.EXTRA_SHORTCUT_INTENT, myLauncherIntent); intent.putExtra (Intent.EXTRA_SHORTCUT_NAME, "Anwendungsname"); intent.putExtra (Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext (getApplicationContext(), R.drawable.app_icon)); intent.setAction ("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext(). SendBroadcast (Absicht);

+0

dies löst nicht das Problem, und zeigen Sie einfach eine andere Möglichkeit, Symbol zu ändern, das Problem ist, Android Studio kann nicht die ausgewählte Aktivität-Alias ​​erkennen, wie dieses zu lösen? –

+0

welche Android-Version verwenden Sie? –