知道应用程序何时被程序删除



我在安卓系统中使用Intent程序卸载了一个应用程序,如下所示:

Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);

它重定向到一个提示,询问您是否要卸载该应用程序。通常在那之后,你可以在屏幕底部看到一个祝酒词,上面写着该应用程序已卸载。但我希望能够得到通知,这样我就可以删除视图中的卸载按钮。

我如何在代码中知道软件包的卸载何时完成?或者如果出现错误?或者甚至如果用户点击";ok";卸载或";取消";如果他改变主意了,我怎么知道呢?有可能知道这些吗?有没有其他方法可以卸载程序包(而不是系统应用程序(并收到通知?

感谢您的阅读。让我知道你是否需要更多信息。

我最终找到了一个解决方案,当一个包被删除时,接收者可以获得一个意图。

在我的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>

创建一个UninstalledBroadcastReceiver类,该类扩展普通BroadcastReceiver

public class UninstalledBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// handle the intent here
}
}

例如,你可以检查你安装的应用程序的包名是否与你自己的包名匹配,并对其进行处理。在我的情况下,我在UninstalledBroadcastReceiver中放置了一些静态字段,包括一个接口,以便我可以执行一些回调。不要认为可以在构造函数中传递字段,因为对象是在收到意向时创建的。

最新更新