Я пытаюсь сделать широковещательный приемник из приложения B в A, но не могу связаться из-за сообщения об ошибке (см. Ниже).Кроме того, я пытался найти в этом форуме ответ для решения указанной проблемы, но ни один из них не кажется мне полезным из-за различий в ситуациях.
Ошибка:
2019-03-28 07:24:23.973 1636-1650/? W/BroadcastQueue: Permission Denial: receiving Intent { act=com.example.cataloguemoviefinal.ACTION_UPDATE_WIDGET_DATA flg=0x30 } to com.example.cataloguemoviefinal/receiver.UpdateWidgetDataReceiver requires com.example.cataloguemoviefinal.UPDATE_WIDGET_DATA due to sender com.example.favoritefilmapp (uid 10147)
Манифест:
Разрешение в приложении A:
<!-- Permission declaration for updating widget content -->
<permission
android:name="com.example.cataloguemoviefinal.UPDATE_WIDGET_DATA" />
Приемник в приложении A:
<!-- Custom Broadcast receiver -->
<receiver
android:name=".receiver.UpdateWidgetDataReceiver"
android:permission="com.example.cataloguemoviefinal.UPDATE_WIDGET_DATA"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.cataloguemoviefinal.ACTION_UPDATE_WIDGET_DATA"/>
</intent-filter>
</receiver>
Вещательный приемник в приложении A:
public class UpdateWidgetDataReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
Log.d("Action intent", intent.getAction());
if(intent.getAction() != null){
if(intent.getAction().equals("com.example.cataloguemoviefinal.ACTION_UPDATE_WIDGET_DATA")){
// Log message
Log.d("Testing receiver", "I got ur updates");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, FavoriteMovieItemWidget.class));
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.favorite_movie_stack_view);
}
}
}
}
Манифест вПриложение B:
<!-- This code is used for custom BroadcastReceiver -->
<uses-permission android:name="com.example.cataloguemoviefinal.UPDATE_WIDGET_DATA"/>
Сообщение отправителя в приложении B:
// Intent for broadcast receiver
Intent broadcastIntent = new Intent();
// Add flags to intent which can be communicated with closed app package (idk if its true)
broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
// Set action
broadcastIntent.setAction("com.example.cataloguemoviefinal.ACTION_UPDATE_WIDGET_DATA");
// Sent broadcast to receiver (use permission)
sendBroadcast(broadcastIntent, "com.example.cataloguemoviefinal.UPDATE_WIDGET_DATA");
Что нужно сделать, чтобы получатель широковещания получил сообщение из приложения B в A (покажите Log.message)?
Извините, если я написал слишком много кода, но это необходимая часть для возможной ошибки.
Спасибо.