devices consola android adb bootcompleted

android - consola - install adb on pc



Android adb shell am broadcast: nombre del componente incorrecto (4)

Estoy tratando de ''emular'' un reinicio (o cualquier otra cosa con el adb shell am ) y no puedo averiguar cómo hacer referencia a mi componente. Por otra parte, tal vez ni siquiera entiendo lo que significa un componente. A continuación, primero incluyo algunos ejemplos de comandos que no funcionan, luego mi manifiesto. Tenga en cuenta que StartupReceiver se llama con éxito cuando se inicia el ''teléfono''. Solo quiero volver a activarlo sin un reinicio completo.

Comandos de ADB fallidos:

$ ./adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n net.fstab.checkit_android.StartupReceiver <help snipped> Error: Bad component name: net.fstab.checkit_android.StartupReceiver $ ./adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n .StartupReceiver <help snipped> Error: Bad component name: .StartupReceiver $ ./adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n StartupReceiver <help snipped> Error: Bad component name: StartupReceiver

Manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.fstab.checkit_android" android:installLocation="internalOnly" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BaseActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="BasePreferences" /> <activity android:name="EditActivity" /> <receiver android:name="StartupReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver> <receiver android:name="NotificationReceiver"> <intent-filter> <action android:name="net.fstab.checkit_android.NotificationReceiver" /> </intent-filter> </receiver> <service android:name="StartupService"> <intent-filter> <action android:name="net.fstab.checkit_android.StartupService" /> </intent-filter> </service> </application> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>


Algunas aplicaciones pueden portarse mal si BOOT_COMPLETED se recibe dos veces, en lugar de limitar la transmisión a su aplicación solamente:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -p com.example.package


Broadcast no requiere especificar ningún Receptor. Este caso, por favor solo acaricia

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Espero que esto ayude.


Debe especificar el nombre del paquete antes del nombre de la clase (luego puede escribirlo sin el paquete) de esta manera:

./adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n net.fstab.checkit_android/.StartupReceiver

Prácticamente resulta que solo tienes que agregar una barra después del nombre del paquete.

Me ayudaste a comenzar, te ayudé a terminar :)


Tratar

adb shell am broadcast / -a android.intent.action.BOOT_COMPLETED / -n net.fstab.checkit_android/.StartupReceiver

(tenga en cuenta el -n net.fstab.checkit_android / .StartupReceiver ) para apuntar a un receptor específico.

También asegúrese de que su aplicación use permiso para recibir intenciones de emisión específicas; en este caso, sería

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />