如果在之前在其设备上安装了应用的用户卸载应用程序之前,如何启动活动,服务或广播接收器?
如果可能请帮助我?并提前感谢
答案 0 :(得分:4)
亲爱的,你不能检查你的应用程序是否要卸载。
当用户卸载应用程序时,首先会终止该进程,然后删除您的apk文件和数据目录,以及程序包管理器中的记录,告知其他应用程序您注册了哪些意图过滤器。
但您可以在缓存目录中创建文件夹,以便在删除应用程序时自动删除所有文件夹和文件。
请检查一下。 http://developer.android.com/guide/topics/data/data-storage.html
因此,您的应用程序无法知道它正在被卸载(不修改内核)。卸载时会自动删除data / data / your.app.package中创建的所有文件。
另一种方法可能是让另一个应用程序检查是否安装了此应用程序。如果没有,它可以进行清理工作。
喜欢this
答案 1 :(得分:2)
您无法检测您的应用是否已安装或已卸载,但对于其他应用,您可以使用此BroadcastReceiver
获取此详细信息。
<receiver android:name=".UninstallApkReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
</intent-filter>
</receiver>
答案 2 :(得分:1)
是使用辅助功能服务,您可以检测到卸载事件,然后阅读屏幕以查找应用程序名称。 Voodo应用程序使用这个概念。
答案 3 :(得分:-1)
是的,您可以为包添加/删除创建广播接收器并从中启动服务。
在清单文件中注册您的广播,如下所示
<receiver android:name=".YourReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package"/>
</intent-filter>
</receiver>
或者你可以通过java代码注册它
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL);
intentFilter.addDataScheme("package");
registerReceiver(br, intentFilter);
希望这个答案对你朋友有帮助:))