gpt4 book ai didi

android - 如何以编程方式使用 BroadCastReceiver

转载 作者:行者123 更新时间:2023-11-30 02:36:31 26 4
gpt4 key购买 nike

如何以编程方式注册监听“PACKAGE_ADDED”操作的 BroadcastReceiver?安装软件包后,我正在尝试做一些事情。我可以通过在 AndroidManifest.xml 中注册接收器来使其工作,但我需要通过以编程方式注册它来使其以另一种方式工作,以便它仅在通过我的应用程序安装的 .apks 上被调用。我已经尝试了几种不同的方式,下面的代码来自这个答案 https://stackoverflow.com/a/4805733/1024722但它不起作用。有什么想法吗?

private BroadcastReceiver receiver;

protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ButterKnife.inject(this);


intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);

receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("test", "received");
}
};

registerReceiver(receiver, intentFilter);

}

编辑:在我的应用程序 Activity 中,我单击一个按钮从服务器下载该应用程序,然后在我的通知栏中单击已下载的应用程序进行安装。然后它会显示此屏幕:​​

enter image description here

我单击“安装”,它会安装但不会调用我的 onReceive 方法(除非我在 xml 中注册它)。然后它显示这个屏幕:

enter image description here

然后我单击“完成”,它会返回到我的“安装”按钮的 Activity 。我想知道它是否不起作用,因为它启动了屏幕截图中显示的 Activity ,因此无法在我的接收器中调用 onReceive 方法,因为我的 Activity 的 onPause 方法已被调用并且在我单击完成之前不再“Activity ” ,这是在调用“PACKAGE_ADDED”操作之后。

最佳答案

您需要添加 http://developer.android.com/reference/android/content/IntentFilter.html#addDataScheme(java.lang.String) :

|intent filter object|.addDataScheme("package");

PackageManager 只会将其发送给具有该 Intent 操作并且数据方案为“包”的接收者。

关于android - 如何以编程方式使用 BroadCastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26454339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com