在我的第一个应用程序中,我在清单文件中定义了一个自定义权限和一个隐式<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>
:
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();
}
}
这是TestBroadcastReceiver.java:
<uses-permission android:name="com.example.test.TEST" />
在第二个应用程序中,我已在清单文件中添加了权限:
getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER"));
在这里,我发送广播:
import * as myFile from "./myFile";
jest.mock("./myFile");
myFile.myFunc = jest.fn().mockImplementation(() => {
return "Some Value";
});
但是在第一个应用程序中什么也没叫。我知道我们不能在android O及更高版本中使用隐式广播,但是根据here,需要签名许可的广播有一个例外:
需要签名许可的广播不受此限制 限制,因为这些广播仅发送到 使用相同的证书签名,而不是设备上的所有应用。
那么我该如何在android O中发信号通知我的其他应用?
答案 0 :(得分:0)
根据CommonsWare的回答,问题是我缺少Version
部分。所以我将代码更改如下,现在可以接收广播了:
setPackage()