正在广播的Android adb shell:组件名称错误

我试图“模拟”重新启动(或其他任何与adb shell am ),我无法弄清楚如何引用我的组件。 再说一遍,也许我甚至不明白一个组件是什么意思。 下面我首先包括一些不起作用的示例命令,然后是我的清单。 请注意,“电话”启动时会成功调用StartupReceiver。 我只是想在没有完全重新启动的情况下重新触发它。

失败的ADB命令:

 $ ./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 

performance:

 <?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> 

你需要在类名之前指定包名(然后你可以在没有包的情况下编写),如下所示:

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

实际上,事实certificate,你只需要在包名后面加一个斜线即可。

你帮我开始了,我帮你完成了:)

广播不需要指定任何接收器。 这种情况下,请中风

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

希望这个帮助。

如果BOOT_COMPLETED收到两次,则某些应用程序可能会出现问题,而将广播限制在您的应用程序中:

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

尝试

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

(注意-n net.fstab.checkit_android / .StartupReceiver )瞄准一个特定的接收器。

另外请确保您的应用程序使用权限来接收特定的广播意图 – 在这种情况下,将是

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