В моем первом приложении я определяю пользовательское разрешение и неявное 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?