如何解决广播接收器未从远程视图pendingintentandroid接收意图
所以我尝试使用 RemoteViews pendingintent 向广播接收器发送一些数据,但接收器从未被触发。
我尝试将 PendingIntent 的标志从 > cc -unqual -table gen_NP {noun = mkN "dog" ; mdfir = "hello"}
s . NCase Nom => hello dog
s . NCase Gen => hello dog's
s . NPAcc => hello dog
s . NPNomPoss => hello dog
a . AgP3Sg Neutr
更改为 FLAG_UPDATE_CURRENT
但这不起作用。
FLAG_CANCEL_CURRENT
顺便说一句,public class CreateNotification {
public static final String CHANNEL_ID = "CHANNEL_ID";
public static Notification notification;
Context context;
public Notification createNotification(Context context,Track track,PendingIntent pendingIntent)
{
notificationmanagerCompat notificationmanagerCompat = notificationmanagerCompat.from(context);
this.context = context;
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.notification_layout);
setListeners(remoteViews);
String image = track.getimageUri();
Bitmap icon;
if(image.equals("default"))
{
icon = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_baseline_home_24);
}
else
{
icon = BitmapFactory.decodeFile(image);
}
notification = new NotificationCompat.Builder(context,CHANNEL_ID)
.setSmallIcon(R.drawable.ic_baseline_music_note_24)
.setonlyAlertOnce(true)
.setShowWhen(false)
.setongoing(true)
.setContent(remoteViews)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.build();
notificationmanagerCompat.notify(1,notification);
return notification;
}
public void setListeners(RemoteViews remoteViews)
{
remoteViews.setTextViewText(R.id.notification_title,"Test7");
Intent play = new Intent(context,PlayingActivity.NotificationReceiver.class);
play.putExtra("DO","play");
PendingIntent btn1 = PendingIntent.getbroadcast(context,1,play,PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setonClickPendingIntent(R.id.notification_pause,btn1);
Intent pause = new Intent(context,PlayingActivity.NotificationReceiver.class);
pause.putExtra("DO","pause");
PendingIntent btn2 = PendingIntent.getbroadcast(context,2,pause,PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setonClickPendingIntent(R.id.notification_play,btn2);
Intent test = new Intent(context,PlayingActivity.NotificationReceiver.class);
test.putExtra("DO","pause");
PendingIntent test3 = PendingIntent.getbroadcast(context,707,test,PendingIntent.FLAG_CANCEL_CURRENT);
remoteViews.setonClickPendingIntent(R.id.notification_container,test);
}
}
中的 NotificationReceiver
是 broadcastReceiver。
创建通知的服务:
PlayingActivity.NotificationReceiver
我确实在 @Override
public int onStartCommand(Intent intent,int flags,int startId) {
createNotificationChannel();
Track track = new Track(displayName,"Test Artist","default");
CreateNotification createNotification = new CreateNotification();
Notification notification = createNotification.createNotification(this,track,pendingIntent);
startForeground(1,notification);
return START_STICKY;
}
private void createNotificationChannel() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
NotificationChannel serviceChannel = new NotificationChannel(CreateNotification.CHANNEL_ID,"TEST",notificationmanager.IMPORTANCE_HIGH);
notificationmanager manager = getSystemService(notificationmanager.class);
manager.createNotificationChannel(serviceChannel);
}
}
中注册了广播接收器,但它仍然无法正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。