卸载我的Android应用程序时可以调用代码吗?

时间:2011-02-27 09:46:29

标签: android

有没有人知道在卸载我的应用程序时是否可以覆盖特定方法?发生这种情况时,最好从服务器端数据库中删除这些用户。

4 个答案:

答案 0 :(得分:9)

不幸的是,目前Android软件包无法在删除代码时执行代码。但是,您可以在另一个软件包中注册BroadcastReceiver ACTION_PACKAGE_REMOVED,当从手机中删除软件包时,将会调用该软件包

另见this question

答案 1 :(得分:0)

是的,您可以通过在设置->管理应用程序->选择特定的应用程序中单击卸载按钮来进行处理。

尝试this answer.

希望这会起作用。

答案 2 :(得分:-1)

我知道我迟到了,但我猜测,因为卸载应用程序足以让用户在服务器上被吹走(而不是用户明确选择“删除我的帐户”选项),我会在服务器/服务端创建一个工作,每隔N个单位(例如30天)扫描非活动用户并删除它们。为什么?永远不会连接到您的服务器的应用程序与卸载的应用程序一样好。

但是,您可以在应用程序中构建逻辑,以处理从未卸载应用程序但未登录超过N个单位的用户最终返回的情况。然后,你可以:

  1. 让应用程序向服务器发送一个特殊的“我已安装”cookie,然后指示应用程序向其发送足够的应用程序端缓存信息以重建服务器上的用户数据,同时说“请等待,同步与服务器...“。只要用户数据不是很大(例如,某种图像库),这应该有效,如果是,那么你最好的选择是用 BOLD字母表示非活动帐户将是删除。
  2. 或者,当然,您也可以将应用重置为原始状态,并希望用户不要讨厌您。
  3. 您可以选择安装服务作为应用程序的一部分,该服务每天唤醒一次,当WiFi可用且设备处于A / C电源状态时,向您的服务发送“心跳”,说“我”米安装“。如果心跳停止超过几天,您可以假设用户卸载了应用程序并删除了用户数据。但请注意,这并非万无一失,因为用户可能只是将设备关闭了很多天。在这种情况下,您现在必须处理心跳进入系统中不再活动的用户的情况,此时您将需要像以前一样构建重建逻辑(这样就没有任何东西可以通过建立心跳的痛苦,非常感谢),或者,你只需将应用程序重置为新的状态,并希望用户不要讨厌你(由于经历了构建心跳的痛苦,再次购买任何东西,谢谢很多)。

    那些讨厌的用户! ; - )

答案 3 :(得分:-2)

是的,有一种方法可以使用Android监听器应用程序来安装和卸载App。

App安装和卸载将在应用程序安装完成后发送广播,系统将监听android.intent.action.PACKAGE_ADDED广播。 intent.getDataString()安装的软件包的名称。当卸载程序系统侦听android.intent.action.PACKAGE_REMOVED无线电时。获取卸载包名称的intent.getDataString()相同。应用程序无法监视安装和卸载,但覆盖安装可以收听他们自己的android.intent.action.PACKAGE_REMOVED广播。

实施例

AndroidManifest.xml配置文件:

<receiver android:name="com.sarbjot.MyApp.BootReceiver" >
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <data android:scheme="package"/>
    </intent-filter>
 </receiver>

接收者致电:

package com.sarbjot.MyApp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // install call
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
            //code here on install
            Log.i("Installed:", intent.getDataString());
        }

        // uninstall call
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
            //code here on uninstall
            Log.i("Uninstalled:", intent.getDataString());

        }
    }
}

我希望它能帮到你们所有人。