0

私の電話は HTC G18 で、ブート レシーバーを使用しています。Android マニフェスト ファイルは次のとおりです。

<receiver android:name=".BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>

そしてJavaコードは

public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, UpdaterService.class).addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES));
    Log.d("BootReceiver", "onReceived");
    Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
}

このコマンドを使用すると、ブート レシーバーが電話で動作します。

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME 

しかし、テストのために再起動しようとすると失敗します。この起動レシーバーを電話で起動したいのですが、どうすれば対処できますか?

4

1 に答える 1

1

マニフェストにアクセス許可があることを確認してください

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

また、省略形の .BootReceiver の代わりに完全なパッケージを追加してみてください。そのような:

com.yourpackage.receivers.BootReceiver

編集ああ、そしてコメントで述べたように。アプリケーションのメイン アクティビティを少なくとも 1 回は開始する必要があります。そうしないと、Android はブート レシーバーを呼び出しません。

于 2013-03-12T12:03:14.547 に答える