Android でデバイスが起動したときにサービスを開始しようとしていますが、うまくいきません。オンラインでいくつかのリンクを調べましたが、どのコードも機能しません。何か忘れているのでしょうか?
AndroidManifest.xml
<receiver
android:name=".StartServiceAtBootReceiver"
android:enabled="true"
android:exported="false"
android:label="StartServiceAtBootReceiver" >
<intent-filter>
<action android:name="android.intent.action._BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service
android:name="com.test.RunService"
android:enabled="true" />
ブロードキャストレシーバー
public void onReceive(Context context, Intent intent) {
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Intent serviceLauncher = new Intent(context, RunService.class);
context.startService(serviceLauncher);
Log.v("TEST", "Service loaded at start");
}
}
ベストアンサー1
他の回答も良さそうですが、すべてを 1 つの完全な回答にまとめようと思いました。
ファイルには次の内容が必要ですAndroidManifest.xml
:
あなたの得意分野で
<manifest>
:<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
要素内
<application>
( には必ず完全修飾(または相対)クラス名を使用してくださいBroadcastReceiver
):<receiver android:name="com.example.MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
android:enabled
( 、などの属性は必要ありませんexported
。Android のデフォルト設定が正しいです)で
MyBroadcastReceiver.java
:package com.example; public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent startServiceIntent = new Intent(context, MyService.class); context.startService(startServiceIntent); } }
元の質問より:
- 要素が要素
<receiver>
内にあったかどうかは不明である<application>
BroadcastReceiver
正しい完全修飾(または相対)クラス名が指定されたかどうかは不明です。- 誤字がありました
<intent-filter>