Android не получает намерение ACTION_PACKAGE_REMOVED в удаленном пакете - PullRequest
11 голосов
/ 06 сентября 2010

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

Похоже, чтополучение намерения УДАЛИТЬ ПАКЕТ было бы местом для этого.Однако мой широковещательный приемник никогда не вызывается - кажется, он был удален до того, как отправлено намерение УДАЛЕНО ПАКЕТА

Код:

public class UninstallReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action= intent.getAction();
  Log.i("U", "ACTION " + action);
  etc.
 }
}

и в манифесте:

 <application android:debuggable="true"
  android:icon="@drawable/icon"
  android:label="@string/app_name">

  <receiver android:name ="com.boom.UninstallReceiver">
   <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
     <data android:scheme="package" />
   </intent-filter>
  </receiver>

Ответы [ 2 ]

13 голосов
/ 06 сентября 2010

Документация гласит:

Удаляемый пакет не получает этого намерения.

Android 2.2 добавлен getExternalFilesDir(),который будет указывать на место на внешнем хранилище, которое Android будет автоматически очищать при удалении приложения.Однако это только для Android 2.2, и есть признаки того, что в данный момент он работает не особо хорошо.Тем не менее, об этом следует помнить в 2011 году.

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

0 голосов
/ 27 сентября 2012

Вы должны добавить разрешение в манифест.

<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
...