#android #android-intent #uninstallation
#Android #android-намерение #удаление
Вопрос:
Я удалил мобильное приложение для Android и сразу же получил SMS с надписью «извините, что вы уходите». Как они отследили, что я удалил приложение?
Ответ №1:
Мы можем реализовать BroadcastReceiver в нашем приложении для прослушивания действия "android.intent.action.QUERY_PACKAGE_RESTART"
и сопоставить имя нашего пакета с методом onReceive(). Если для выбора желаемого пакета приложений была получена трансляция, мы запустим фоновый поток, который будет продолжать отслеживать действия, выполняемые на переднем плане, с помощью ActivityManager.
Как только мы обнаружим, что активность на переднем плане будет "com.android.packageinstaller.UninstallerActivity"
, это подтвердит, что пользователь хочет удалить наше приложение. На этом этапе мы выполним желаемые задачи (либо отобразим диалоговое окно, либо запустим другое действие, перекрывающее окно удаления, И т. Д.), Которые необходимо выполнить перед удалением. После выполнения нашей задачи мы позволим пользователю продолжить процесс подтверждения удаления.
Когда пользователь нажимает на кнопку удаления в разделе «Управление настройками приложений», мы выполним наши задачи по предварительной деинсталляции, а затем отправим пользователя в окно подтверждения, где пользователь может либо подтвердить удаление, либо отменить операцию.
Ответ №2:
Редактировать раньше вы могли делать это таким образом, требуемое разрешение теперь устарело
При удалении приложения запускается трансляция для «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>
UninstallBroadcastReceiver
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 amp;amp; packageName.equals("YOUR_APPLICATION_PACKAGE_NAME")){
//Do Something ?
}
}
}
}
}
Все еще не уверен, как вам нужно будет отслеживать, отменяет ли пользователь действие, но запускает сетевой вызов, информирующий о том, что ваше приложение будет удалено.