Java [Android] Wie SystemApp aktivieren/deaktivieren (ab API 10)

T

Tersus

Gast
Ich versuche mittels einer App, andere Apps zu (de)aktivieren, aber es funktioniert nicht. Über Settings->Apps ist es möglich System-Apps zu deaktivieren (disable).

Das muss doch irgendwie per Programmcode funktionieren, oder?

Ich habe innerhalb meiner CyanogenMod den Musikplayer "Apollo". Dabei handelt es sich um eine deaktivierbare SystemApp.

Code:
for (PackageInfo packageInfo : packageInfoList) {

    pi = packageInfo;

    try {
        ai = packageManager.getApplicationInfo(packageInfo.packageName,
            PackageManager.GET_META_DATA
        );
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    if (packageManager.getApplicationLabel(ai).equals("Apollo")) {
        break;
    }
}
Nun habe ich also die PackageInfo meiner App, die ich deaktivieren möchte.

Weiter geht's.

Code:
packageManager.setApplicationEnabledSetting(pi.packageName, COMPONENT_ENABLED_STATE_DISABLED, 0); // failed

Zweiter Versuch.
Code:
final ComponentInfo componentInfo = pi.activities[0];
final ComponentName componentName = new ComponentName(
    componentInfo.packageName, componentInfo.name
);
packageManager.setComponentEnabledSetting(componentName, COMPONENT_ENABLED_STATE_DISABLED, 0); // failed

In beiden Fällen stürzt meine App ab. Muss ich vielleicht irgendetwas in meine Manifest eintragen?

Grüße
 
Schon mal mit
Code:
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
ausprobiert?
Könnte aber sein, dass du das eh nicht setzen kannst, denn laut Android-Manifest-Doku ist diese Konstante
Not for use by third-party applications.
Unter Umständen musst du auch
Code:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
setzen.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

Zurück
Oben