前提・実現したいこと
MainActivityからサービスを起動しサービス側から送られたメッセージを受信したいです。
デバックした所サービス側からのメッセージ送信は出来ていると思われますがMainActivity側での
受信が上手くいきません。
解決策をご教示頂けると幸いです。
発生している問題・エラーメッセージ
onReceive()が呼び出されない。
該当のソースコード
androidManifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <!-- バージョンを変えたい場合は build.gradle を変更 --> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".Admin" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/admin"/> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver> <receiver android:name=".StartupReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- <category android:name="android.intent.category.DEFAULT" /> --> </intent-filter> </receiver> <service android:name=".SensorServic" /> </application> <!-- 注意:「起動完了」のBroadcastを受信するには、パーミッションが必要 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Android 9.0(Pie)から必要 --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> </manifest>
MainMainActivity.java抜粋
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // メッセージ受信 IntentFilter filter = new IntentFilter(); filter.addAction("MAIN_ACTION"); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); screenAction = bundle.getString("message"); // 受信したら画面の制御を行う screenAction(); } }; }
public void sendMessage(String msg){ Intent broadcastIntent = new Intent(); broadcastIntent.putExtra( "message", msg); broadcastIntent.setAction("MAIN_ACTION"); getBaseContext().sendBroadcast(broadcastIntent); }
補足情報(FW/ツールのバージョンなど)
Android9
まだ回答がついていません
会員登録して回答してみよう