Может ли код вызываться, когда мое приложение для Android будет удалено?

Кто-нибудь знает, доступен ли какой-либо конкретный метод для переопределения при удалении моего приложения? Было бы неплохо удалить этих пользователей из базы данных на стороне сервера, когда это произойдет.

Ответ 1

К сожалению, в настоящее время нет способа для пакета Android выполнить код при его удалении. Однако вы можете зарегистрировать BroadcastReceiver для ACTION_PACKAGE_REMOVED в другом пакете, который будет вызываться, когда пакеты удаляются с телефона.

Также см. этот вопрос.

Ответ 2

Да, вы можете справиться с этим, определив нажатие кнопки "Удалить" в меню " Настройки" → "Управление приложениями" → "Выбрать конкретное приложение".

попробуйте этот ответ.

Надеюсь, это будет работать.

Ответ 3

Я знаю, что опаздываю на вечеринку, но я предполагаю, что, поскольку для удаления приложения достаточно убрать пользователя на сервере (в отличие от пользователя, явно выбирающего вариант "удалить мою учетную запись" )), Я бы создал задание на сервере/стороне службы, которое сканирует неактивные пользователи каждые N единиц времени (например, 30 дней) и удаляет их. Зачем? Приложение, которое никогда не подключается к вашему серверу, не хуже удаляемого приложения.

Однако вы можете построить логику в своем приложении, чтобы обрабатывать случай, когда те пользователи, которые никогда не удалили приложение, но не входите в систему за более чем девять единиц времени, в конце концов возвращайтесь. Затем вы можете:

  • заставить приложение отправить на сервер специальный файл "Я уже установлен", который затем инструктирует приложение отправить ему достаточно кэшированной информации на стороне приложения, чтобы восстановить пользовательские данные на сервере, сказав "Подождите, синхронизируя с сервером...". Это должно работать до тех пор, пока пользовательские данные не будут огромными (например, некоторая библиотека изображений), и если это так, то лучше всего указать в письмах BOLD, что неактивные аккаунты будут удален.
  • Или, конечно же, вы можете просто приложить reset к своему первоначальному состоянию и надеяться, что пользователь вас не будет ненавидеть.

Вы можете пойти по маршруту, чтобы установить службу как часть вашего приложения, которое просыпается один раз в день, и когда WiFi доступен, и устройство находится в режиме A/C, посылает вам "сердцебиение", говоря "я", m установлен ". Если сердцебиение останавливается более чем на несколько дней, вы можете предположить, что пользователь удалил приложение и удалил пользовательские данные. Но обратите внимание, что это не является надежным, так как пользователь может просто отключить устройство на протяжении многих дней. В этом случае вам теперь придется обрабатывать ситуацию, когда приходит сердцебиение для пользователя, который больше неактивен в системе, после чего вам нужно будет построить логику восстановления, как и раньше (которая не покупает вам ничего для прохождения эта боль создания сердечного ритма, большое спасибо), или вы просто reset приложение к его новому состоянию и надеетесь, что пользователь вас не ненавидит (который снова не покупает вам ничего для того, чтобы пройти через эту боль от создания сердечного ритма, большое спасибо).

Эти надоедливые пользователи!; -)

Ответ 4

Да, есть способ, которым вы можете использовать приложение Android-слушателя для установки и удаления приложения.

Установка и удаление приложения отправит широковещательную передачу, когда установка приложения будет завершена, система будет слушать широковещательную передачу 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());

        }
    }
}

Надеюсь, это поможет всем вам.