再起動(または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
マニフェスト:
<?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
実際には、パッケージ名の後にスラッシュを追加するだけです。
あなたは私が始めるのを助けました、私はあなたが終わるのを助けました:)
ブロードキャストでは、レシーバーを指定する必要はありません。この場合、ただストロークしてください
adb Shell am broadcast -a Android.intent.action.BOOT_COMPLETED
この助けを願っています。
BOOT_COMPLETEDが2回受信されると、一部のアプリが誤動作する場合があります。代わりに、アプリのみにブロードキャストを制限します。
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" />