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

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

3 ответа

Решение

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

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

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

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

  1. Сделайте так, чтобы приложение отправляло на сервер специальный файл cookie "Я уже установлен", которое затем инструктирует приложение отправлять ему достаточно кэшированной информации на стороне приложения, чтобы восстановить пользовательские данные на сервере, говоря: "Пожалуйста, подождите, синхронизация с сервером...". Это должно работать до тех пор, пока пользовательские данные не велики (например, какая-то библиотека изображений), и если это так, то лучше всего указывать жирным шрифтом, что неактивные учетные записи будут удалены.
  2. Или, конечно, вы также можете просто вернуть приложение в исходное состояние и надеяться, что пользователь вас не ненавидит.

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

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

Да, вы можете справиться с этим путем идентификации нажмите на Uninstall кнопки из меню Настройки -> Управление приложениями -> Выбор конкретного применения.

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

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

Да, есть способ использовать приложение для прослушивания 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());

        }
    }
}

Я надеюсь, что это поможет вам всем.

Другие вопросы по тегам