我必须接收系统发送的隐式广播(ACTION_PACKAGE_ADDED)来检测应用程序的安装并执行一些代码.我使用下面的代码:
public class Receiver extends broadcastReceiver{ @OverrIDe public voID onReceive(Context context, Intent intent) { // It will trigger when any app is installed Uri data = intent.getData(); String packageAdv = data.getEncodedSchemeSpecificPart(); //some code... }}
在我的Manifest文件中,我声明了我的接收器:
<receiver androID:@R_404_6889@="com.myapp.Receiver"> <intent-filter> <action androID:@R_404_6889@="androID.intent.action.PACKAGE_ADDED" /> <data androID:scheme="package"/> </intent-filter></receiver>
它在Version 8.0 Oreo之前完美运行.现在,我必须使用registerReceiver使接收器显式化.我怎样才能做到这一点?示例代码将不胜感激.
解决方法:
我决定创建一个简单的服务来监听PACKAGE_ADDED事件.
public class MyService extends Service { private broadcastReceiver receiver; public MyService() { } @OverrIDe public voID onCreate() { IntentFilter intentFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); intentFilter.addDataScheme("package"); receiver = new Receiver(); registerReceiver(receiver, intentFilter); } //ensure that we unregister the receiver once it's done. @OverrIDe public voID onDestroy() { unregisterReceiver(receiver); } @OverrIDe public IBinder onBind(Intent intent) { return null; }}
另外,我需要在清单文件中声明我的服务:
<service androID:@R_404_6889@="com.nolesh.myapp.MyService" androID:enabled="true"></service>
总结 以上是内存溢出为你收集整理的如何在Oreo(8.0)中使用隐式广播PACKAGE_ADDED?全部内容,希望文章能够帮你解决如何在Oreo(8.0)中使用隐式广播PACKAGE_ADDED?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)