知道何时以编程方式删除应用程序
Know when an app has been programatically deleted
我在 Android 中使用 Intent 以编程方式卸载应用程序,如下所示:
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
重定向到询问您是否要卸载该应用程序的提示。
通常在那之后,您会在屏幕底部看到提示信息,表示该应用程序已卸载。但我希望能够收到通知,以便我可以删除视图中的卸载按钮。
如何在代码中知道程序包卸载完成?或者如果发生错误?或者甚至,如果用户单击“确定”卸载或如果他改变主意单击“取消”,我怎么知道?
有可能知道这些吗?有没有其他方法可以卸载软件包(不是系统应用程序)并收到通知?
感谢您的阅读。如果您需要更多信息,请告诉我。
好吧,我最终找到了一个解决方案,当一个包被删除时,有一个可以被接收者拾取的意图。
在我的 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 class
public class UninstalledBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// handle the intent here
}
}
例如,您可以检查您安装的应用程序的包名称是否与您自己的相匹配,并对其进行处理。在我的例子中,我在 UninstalledBroadcastReceiver 中放置了一些静态字段,包括一个接口,以便我可以执行一些回调。不要认为你可以在构造函数中传递字段,因为对象是在接收到意图时创建的。
我在 Android 中使用 Intent 以编程方式卸载应用程序,如下所示:
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
重定向到询问您是否要卸载该应用程序的提示。 通常在那之后,您会在屏幕底部看到提示信息,表示该应用程序已卸载。但我希望能够收到通知,以便我可以删除视图中的卸载按钮。
如何在代码中知道程序包卸载完成?或者如果发生错误?或者甚至,如果用户单击“确定”卸载或如果他改变主意单击“取消”,我怎么知道? 有可能知道这些吗?有没有其他方法可以卸载软件包(不是系统应用程序)并收到通知?
感谢您的阅读。如果您需要更多信息,请告诉我。
好吧,我最终找到了一个解决方案,当一个包被删除时,有一个可以被接收者拾取的意图。
在我的 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 class
public class UninstalledBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// handle the intent here
}
}
例如,您可以检查您安装的应用程序的包名称是否与您自己的相匹配,并对其进行处理。在我的例子中,我在 UninstalledBroadcastReceiver 中放置了一些静态字段,包括一个接口,以便我可以执行一些回调。不要认为你可以在构造函数中传递字段,因为对象是在接收到意图时创建的。