Не могу получать трансляции для намерений ПАКЕТА
Я пытаюсь зарегистрировать широковещательный приемник для получения широковещательных событий для событий пакета. Ниже приведен код и мой получатель в файле манифеста. Журналирование никогда не происходит, но я ясно вижу то же самое вещание для операторов отладки "HomeLoaders" (Launcher). Что мне не хватает?
public class IntentListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("INTENT LISTNER:", intent.getAction());
}
}
<receiver android:name="IntentListener" android:enabled="true" android:exported="true">
<intent-filter>
<data android:scheme="package"></data>
<action android:name="android.intent.action.PACKAGE_ADDED"></action>
<action android:name="android.intent.action.PACKAGE_ADDED"></action>
<action android:name="android.intent.action.PACKAGE_CHANGED"></action>
</intent-filter>
</receiver>
3 ответа
Возможно, что эти Intent
s не могут быть получены компонентами, зарегистрированными в манифесте, но только получателями, зарегистрированными в Java через registerReceiver()
,
Это мой манифест, без
<category android:name="android.intent.category.DEFAULT" />
Мое приложение обнаруживает только установку приложения Android Market, но не удаляет. Теперь он также получает трансляции не из Android Market.
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".SomeActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.som.pakage.PackageInstallReceiver" >
<intent-filter >
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
</receiver>
</application>
Эти три намерения, а именно,
Intent.ACTION_PACKAGE_ADDED
Intent.ACTION_PACKAGE_REMOVED
Intent.ACTION_PACKAGE_CHANGED
когда транслируется системой, есть
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
добавлен флаг, чтобы только зарегистрированные получатели получали широковещательные сообщения, и компоненты широковещательных приемников не запускались. Обратитесь к Intent и PackageManagerService классу источника для получения дополнительной информации.