问题描述
我使用Intent在Android上以编程方式卸载应用,如下所示:
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE,packageURI);
startActivity(uninstallIntent);
哪个重定向到提示,询问您是否要卸载应用程序。 通常之后,您会在屏幕底部看到一个祝酒词,说该应用程序已卸载。但是我希望能够收到通知,以便可以删除视图中的卸载按钮。
如何在代码中知道何时完成软件包的卸载?还是发生错误?甚至,如果用户改变主意,单击“确定”以卸载或单击“取消”,我怎么知道? 有可能知道这些吗?有没有其他方法可以卸载软件包(而不是系统应用程序)并得到通知?
感谢您的阅读。 Lemme知道您是否需要更多信息。
解决方法
好吧,我最终找到了一个解决方案,当一个包裹被拿走时,有一种意图可以被接收者接收。
在我的AndroidManifest中
<application
<!--...-->
<receiver
android:name=".UninstalledBroadcastReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
</application>
创建一个扩展了常规BroadcastReceiver的UninstalledBroadcastReceiver类
public class UninstalledBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context,Intent intent) {
// handle the intent here
}
}
例如,您可以检查已安装的应用程序的软件包名称是否与您自己的软件包名称匹配,并对其进行处理。就我而言,我在UninstalledBroadcastReceiver中放置了一些静态字段,包括一个接口,以便可以执行一些回调。不要认为您可以在构造函数中传递字段,因为对象是在收到意图后创建的。