Возможно отслеживать удаление приложения Android на уровне пользователя?

#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 ?

                }
            }
        }
    }

}
 

Все еще не уверен, как вам нужно будет отслеживать, отменяет ли пользователь действие, но запускает сетевой вызов, информирующий о том, что ваше приложение будет удалено.