android - Activity 与 BroadcastReceiver 的交互

标签 android

按下按钮后,我开始卸载另一个应用程序,并且需要知道该应用程序的卸载是否成功,以便我可以相应地更新我的应用程序的 UI。

我已经写了一个收到的广播,但在我的 Activity 中我怎么知道应用程序是否被卸载了。

我的按钮按下代码:

if(planet.isChecked()){
                        Intent intent = new Intent(Intent.ACTION_DELETE);
                        intent.setData(Uri.parse("package:"+planet.getPackageInfo().packageName));
                        startActivity(intent);
}

我的广播接收器:

if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
            Toast.makeText(context, " onReceive !!!! PACKAGE_REMOVED",
                    Toast.LENGTH_LONG).show();

}

最佳答案

您需要指定package 方案才能使用android.intent.action.PACKAGE_REMOVEDHere's a link对此进行了一些讨论。

另一种选择是稍等片刻,然后使用 getPackageInfo() 检查是否仍安装了已删除的包。 .您需要将调用包装在 try/catch 中;如果未安装,它将抛出 PackageManager.NameNotFoundException

关于android - Activity 与 BroadcastReceiver 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889296/

相关文章:

android - Google Developer Console 错误地认为我的应用不是为平板电脑设计的

android - 使用 ZXing native 使用条形码编号获取产品信息

java - 如何从外部 APK 文件将签名读入 ByteArray

android - 在抽屉导航上出错

android - 布局上的 "tag"和 "id"是什么?

android - Flutter 不包含原生调试符号

java - For 循环使用 Thread.Sleep 跳过两次迭代

android - MotionEvent GetY() 和 getX() 返回不正确的值

android - 通过 Intent 回到第一个 Activity,Activity 堆栈会发生什么情况?

android - Google Maps Android v2 不适用于 ActionBarSherlock fragment Activity