【发布时间】:2021-04-18 06:18:06
【问题描述】:
我卸载了一个 android 移动应用程序,并立即收到一条短信,上面写着“很抱歉看到你走了”。他们如何跟踪我卸载了该应用程序?
【问题讨论】:
标签: android android-intent uninstallation
我卸载了一个 android 移动应用程序,并立即收到一条短信,上面写着“很抱歉看到你走了”。他们如何跟踪我卸载了该应用程序?
【问题讨论】:
标签: android android-intent uninstallation
编辑你以前可以这样做,现在不推荐使用所需的权限
卸载应用时,它会为“QUERY_PACKAGE_RESTART”触发广播。
因此您需要拥有权限并构建广播接收器
<uses-permission android:name="android.permission.GET_TASKS"/>
然后是 manifest.xml
<receiver android:name=".UninstallBroadcastReceiver">
<intent-filter android:priority="0">
<action android:name="android.intent.action.QUERY_PACKAGE_RESTART" />
<data android:scheme="package" />
</intent-filter>
</receiver>
卸载广播接收器
public class UninstallBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String[] packageNames = intent.getStringArrayExtra("android.intent.extra.PACKAGES");
if(packageNames!=null){
for(String packageName: packageNames){
if(packageName!=null && packageName.equals("YOUR_APPLICATION_PACKAGE_NAME")){
//Do Something ?
}
}
}
}
}
仍然不确定您需要如何跟踪用户是否取消操作,但会触发网络调用,通知您的应用即将被卸载。
【讨论】:
我们可以在我们的应用程序中实现一个 BroadcastReceiver 来监听动作"android.intent.action.QUERY_PACKAGE_RESTART" 并在 onReceive() 方法中匹配我们的包名。如果收到广播以选择我们所需的应用程序包,那么我们将启动一个后台线程,该线程将使用 ActivityManager 继续监视前台运行的活动。
一旦我们发现前台活动是"com.android.packageinstaller.UninstallerActivity",就会确认用户想要卸载我们的应用程序。此时,我们将执行卸载前要执行的所需任务(显示对话框,或启动另一个与卸载窗口重叠的活动等)。执行我们的任务后,我们将允许用户继续确认卸载过程。
当用户单击“管理应用设置”下的“卸载”按钮时,我们将执行我们的预卸载任务,然后提示用户进入“确认”窗口,用户可以在此确认卸载或取消操作。
【讨论】: