をBroadcastReciever
送信したいシステムアプリがありますIntent
(そのシステムアプリを改造しているため、テスト目的で)。
システム アプリのAndroidManifest.xml
は次のようになります。
<application android:label="@string/app_name">
<receiver android:label="StateReceiver" android:name=".abstractor.StateReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="com.sec.android.contextaware.HEADSET_PLUG" />
<action android:name="android.intent.action.LOCALE_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<provider android:name=".manager.LoggingDataProvider" android:authorities="com.sec.android.contextaware.manager.LoggingDataProvider" />
</application>
テスト アプリを使用して、ターゲット システム アプリが実際にそのインテントを受信できるかどうかを確認します。
Intent intent = new Intent();
intent.setAction("com.sec.android.contextaware.HEADSET_PLUG");
PackageManager pm = getPackageManager();
for (ResolveInfo resolveInfo : pm.queryBroadcastReceivers(bt, 0)) {
Log.d("APP: ", resolveInfo.toString());
}
システムアプリの情報を取得ResolveInfo
して、インテントを受け取ることができるはずです。次に、次のようにインテントをブロードキャストします。
sendBroadcast(intent);
しかし何も起こらず、意図は受け取られません。ターゲット システム アプリのマニフェスト ファイルとコードを完全に制御できます。どういうわけか意図を伝えることは可能ですか?デバイスはルート化されています。