Android - Versuchen zu testen, ein service auf dem boot (java.lang.SecurityException: Permission Denial -)
Ich habe versucht zu testen, ein service, wenn ein Gerät bootet, auf android, aber ich kann nicht ankommen es zu wirken.
Ich versuche, es zu starten mit diesem Befehl aus CMD:
(in ..\AppData\Local\Android\sdk\platform-tools)
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
oder
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n net.fstab.checkit_android/.MyReceiver
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tabache.sciopero">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name="com.example.tabache.sciopero.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Declaring broadcast receiver for BOOT_COMPLETED event. PER FARE UN SERVIZIO AVVIATO ALL'INIZIO -->
<receiver android:name="com.example.tabache.sciopero.MyReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity><!-- ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
</manifest>
mein receiver Klasse ist das denn:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("MyReceiver !!!!");
Intent startServiceIntent = new Intent(context, MioServizio.class);
context.startService(startServiceIntent);
}
}
die Antwort auf meine dos-Befehl:
Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED cat=[android.intent.category.HOME] cmp=net.fstab.checkit_android/.MyReceiver }
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=3715, uid=2000
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3507)
at com.android.commands.am.Am.sendBroadcast(Am.java:772)
at com.android.commands.am.Am.onRun(Am.java:404)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.am.Am.main(Am.java:121)
at com.android.internal.os.RuntimeInit.nativeFinishInit(NativeMethod)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
Warum habe ich diesen Fehler "java.lang.SecurityException: Permission-Leugnung"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dasselbe problem und lösen durch diese:
und dann broadcast BOOT_COMPLETED wie diese
adb root
funktioniert nur auf verwurzelt Geräte oder Emulatoren ohne play-Dienste. Danke!Wenn adb root funktioniert nicht (Aufbau der Produktion),
Verwenden Sie in Ihrem manifest :
android:name="android.intent.action.ACTION_BOOT_COMPLETED
statt.und vom terminal: