是否有可能检测到Android应用程序卸载?

时间:2014-11-26 05:03:55

标签: android android-intent uninstall

如果在之前在其设备上安装了应用的用户卸载应用程序之前,如何启动活动,服务或广播接收器?

如果可能请帮助我?并提前感谢

4 个答案:

答案 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);

希望这个答案对你朋友有帮助:))