BroadcastReceiver
在我的第一个应用程序中,我在清单文件中定义了一个自定义权限和一个隐式权限:
<permission
android:name="com.example.test.TEST"
android:protectionLevel="signature" />
<receiver
android:name=".TestBroadcastReceiver"
android:enabled="true"
android:exported="true"
android:permission="com.example.test.TEST">
<intent-filter>
<action android:name="com.example.test.TEST_RECEIVER" />
</intent-filter>
</receiver>
这是 TestBroadcastReceiver.java:
public class TestBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Test", "Hello World!");
Toast.makeText(context, "Hello World!", Toast.LENGTH_LONG).show();
}
}
在我的第二个应用程序中,我在清单文件中添加了权限:
<uses-permission android:name="com.example.test.TEST" />
在这里,我发送广播:
getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER"));
但是在第一个应用程序中没有调用任何内容。我知道我们不能在 android O 及更高版本中使用隐式广播,但根据这里,需要签名权限的广播有一个例外:
需要签名权限的广播不受此限制,因为这些广播仅发送到使用相同证书签名的应用程序,而不是设备上的所有应用程序。
那么如何在 android O 中向我的其他应用发出信号呢?