有没有人知道在卸载我的应用程序时是否可以覆盖特定方法?发生这种情况时,最好从服务器端数据库中删除这些用户。
答案 0 :(得分:9)
不幸的是,目前Android软件包无法在删除代码时执行代码。但是,您可以在另一个软件包中注册BroadcastReceiver
ACTION_PACKAGE_REMOVED
,当从手机中删除软件包时,将会调用该软件包
答案 1 :(得分:0)
答案 2 :(得分:-1)
我知道我迟到了,但我猜测,因为卸载应用程序足以让用户在服务器上被吹走(而不是用户明确选择“删除我的帐户”选项),我会在服务器/服务端创建一个工作,每隔N个单位(例如30天)扫描非活动用户并删除它们。为什么?永远不会连接到您的服务器的应用程序与卸载的应用程序一样好。
但是,您可以在应用程序中构建逻辑,以处理从未卸载应用程序但未登录超过N个单位的用户最终返回的情况。然后,你可以:
您可以选择安装服务作为应用程序的一部分,该服务每天唤醒一次,当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());
}
}
}
我希望它能帮到你们所有人。