2016-05-05 9 views
0

У меня есть 2 приложения. Один из них постоянно транслирует настраиваемые строки, а другой получает. Я должен быть уведомлен и удалить некоторые данные в приложении приемника, когда приложение телевещателя будет удалено. Есть ли метод, например onDelete() или что-то в этом роде? Как я могу это сделать?Android: Как определить, удалено ли приложение вещателя?

ответ

1

Да! Есть намерение под названием ACTION_PACKAGE_REMOVED, которое вы можете прослушать.

Добавить это внутри <application> в манифесте: (не забудьте изменить имя пакета)

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

Затем вам нужно создать класс, упомянутых выше.

public class UninstallReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if(intent.getData().getSchemeSpecificPart() == "com.arjnklc.broadcasterapp") 
     cleanUpEverything(); 
} 
} 
0

Не совсем уверен, когда вы хотите делать, но из того, что я понимаю, вы хотите, чтобы ваше второе приложение узнало, когда первое приложение удалено?

Если это так, то это сделать:

В AndroidManifest.xml, вы должны иметь новый BroadcastReceiver, потому что этот приемник используется другая схема данных:

<receiver 
    android:name=".PackageReceiver" 
    android:enabled="true" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_ADDED" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

Тогда ваш BroadcastReceiver:

public class PackageReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 

     if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) { 
      Log.d(TAG, "ACTION_PACKAGE_REMOVED"); 

      String data = intent.getData().toString(); 
      // data string has the package name 
      // if that is your package name, your first app was uninstalled 
     } 
    } 
} 

Просто убедитесь, что это отдельный BroadcastReceiver. Он не может быть объединен с каким-либо другим получателем или другие действия перестанут работать.

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