美文网首页安卓
app widget 在8.0以上收不到广播问题解决

app widget 在8.0以上收不到广播问题解决

作者: 欣巴步 | 来源:发表于2018-04-22 22:07 被阅读0次

    AppWidget的基础知识可以参考网上也有的资料,相对比较实用的可以看看这篇:

    app widget简单用法之音乐播放器桌面控件

    但在实际调测过程中,8.0版本以上的手机死活收不到service发过来的ACTION消息,试了6.0和7.0时没有问题的。查了android官方的一些说法,在8.0以上广播机制有所变化,sendbroadcast前要指定下receiver的类(AppwidgetProvider本质上还是一个receiver),比如:在MyAppwidgetProvider里onUpdate时指定了一个按键的事件:

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.myappwidget);

    Intent intent_count = new Intent();

    intent_count.setAction(Constant.ACTION_COUNT); 

    PendingIntent pendingIntent_count = PendingIntent.getBroadcast(context, 0, intent_count, 0); 

    remoteViews.setOnClickPendingIntent(R.id.wvbtn_t1, pendingIntent_count);

    如果此时的广播是发给MyAppwidgetProvider自己的,则需要添加:

    intent_count.setComponent(new ComponentName(context,MyAppWidgetProvider.class));//必须写

    如果此时的广播是发给其他的service或者activity,则不要添加setComponent,调试发现加了广播收不到。

    在其他的service或者activity里自己写个receiver,在onReceive里添加:其他代码可以参考上面的播放器文章

    new_intent.setComponent(new ComponentName(context,MyAppWidgetProvider.class));//8.0以上版本必须写

    其他的如静态注册按照常规实现即可。目前仅发现这一个问题,后续再补充吧。

    相关文章

      网友评论

        本文标题:app widget 在8.0以上收不到广播问题解决

        本文链接:https://www.haomeiwen.com/subject/iqkecftx.html