Intereting Posts
Изменение фонового изображения текущего фрагмента в viewpager Android SeekBar не обновляется после динамического задания максимального значения с помощью setMax Как удалить пробелы между тегами в XML Почему плагин phonegap-facebook приводит к сбою моей сборки phonegap? Как программно добавить 2 текстовых изображения в линейной компоновке Как создать диалог «Да / Нет оповещения» в «Фрагмент в Android» Ошибка сборки привязки данных Android: : не удалось установить привязку данных Помощь Android с изменением типа шрифта кнопки, как? RecyclerView onBindViewHolder вызывается только один раз внутри макета вкладки Как использовать переключатель перехода D-pad между строкой listview и ее подделками (поддержка Google TV) Разрывы строк с WCF, JSON и клиентом, отличным от Windows Можно ли удалить разрешения из приложения Android? Сервер adb устарел. убийство Невозможно воспроизвести это видео Basic Android: Как отобразить строку ввода пользователя?

Как правильно фильтровать пакет, замененный трансляцией

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

Вот мой код (манифест):

<receiver android:name=".UpdateReciever"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" android:path="com.my.app" /> </intent-filter> </receiver> 

Ресивер:

 public class AppUpdateReciever extends BroadcastReceiver { @Override public void onReceive(Context con, Intent intent) { //code.. } } 

Добавьте это к методу onReceive:

 if (intent.getDataString().contains("com.my.app")){ ... } 

EDIT: Обратите внимание, что регистрация для ACTION_PACKAGE_REPLACED заставляет ваше приложение запускаться каждый раз, когда какое-либо приложение обновляется, если оно еще не открыто. Я не знаю, как избежать этого до API 12, но в API 12 вы можете зарегистрироваться для ACTION_MY_PACKAGE_REPLACED чтобы вам не нужно было фильтровать намерение, и ваше приложение не будет запущено без необходимости при обновлении других приложений.

Альтернативно, если ваш код находится в библиотеке, включенной в несколько приложений, или если вы просто хотите что-то, что можно скопировать / вставить между приложениями без изменений:

 int intentUid = intent.getExtras().getInt("android.intent.extra.UID"); int myUid = android.os.Process.myUid(); if (intentUid == myUid) { ... }