Android - kann den Rundfunkabsturm nicht aktivieren
-
20-09-2019 - |
Frage
Ich bin nach dem Upgrade auf die neueste SDK zurückgekehrt und plötzlich fehlgeschlagen mein Widget beim Start mit dieser Nachricht:
ERROR/AndroidRuntime(5296): java.lang.RuntimeException:
Unable to start receiver topjob.widget.SearchWidget:
java.lang.SecurityException: Permission Denial:
attempt to change component state from pid=5296, uid=10057, package uid=10048
Hier sind zwei Codezeilen, in denen eine Ausnahme eintritt:
@Override
public void onEnabled(Context context) {
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("topjob",
".widget.SearchWidgetBroadcastReceiver"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
startAlarm(context, UPDATE_RATE_SEC);
}
Also im obigen Code startAlarm()
wird seitdem nie ausgeführt pm.setComponentEnabledSetting()
wirft die Sicherheitsexception aus
Fehlt mir Sicherheitseinstellungen in meinem Manifest? Derzeit habe ich:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Ich entwickle mich für SDK v. 1.5
Und es funktioniert früher gut
Ps es passiert am Telefon und dem Emulator
Lösung 3
OK - das ist nicht wirklich antwortet, sondern eine Problemumgehung. Wenn jemand einsteigen und Antwort oder Erklärungen geben möchte, wie dies getan werden soll, würde ich das gerne akzeptieren. Wie auch immer - ich habe es zum Laufen gebracht, indem ich mich veränderte newState
Flagge von COMPONENT_ENABLED_STATE_ENABLED
zu PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
. Da mein Broadcast -Empfänger den Staat im Manifest ermöglicht hat, funktioniert er gut
Andere Tipps
Im Manifest.xml werden Sie hinzufügen
<permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
android:sharedUserId="android.uid.system"
Im Android.mk fügt hinzu
LOCAL_CERTIFICATE := platform
das ist alles.
Können Sie versuchen, diese Berechtigung in Ihrem Manifest hinzuzufügen?
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
Ich habe nur diesen Fehler "java.lang.securityException: Berechtigung Ablehnung:" Wenn ich versuche, einige Komponenten aus dem Paket zu deaktivieren, in dem es ausgeführt wird.