Nadawanie działania BOOT_COMPLETED nie działa poprawnie
Mam klasę odbiornika nasłuchującą na kilku akcjach, ale nie może ona złapaćandroid.intent.action.BOOT_COMPLETED
akcja. Co robię źle? tutaj jest mój plik manifestu:
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--<receiver android:name=".OtherReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>-->
<receiver android:name="com.myApp.AppReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="com.myApp.wifitimer"/>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="com.myApp" />
</intent-filter>
</receiver>
jak widać, ponownie dodałem pozwolenie wewnątrz odbiornika, a nazwa odbiorcy otrzymuje pełną nazwę klasyodpowiedź wskazuje.
oto klasa odbiorcy transmisji:
@Override
public void onReceive(Context arg0, Intent arg1) {
String action1 = arg1.getAction();
if(action1.equals(Intent.ACTION_BOOT_COMPLETED)) {
Log.d("receiver","action is: boot");
}
if(action1.equals("android.intent.action.PACKAGE_REPLACED")) {
Log.d("receiver","action is: package");
}
}
Po uruchomieniu aplikacji odbiornik łapieandroid.intent.action.PACKAGE_REPLACED
ale po ponownym uruchomieniu telefonu odbiornik nie łapieBOOT_COMPLETED
.
Jednak kiedy komentuję w.OtherReceiver
wMainfest plik może go złapać!
Oto kod tej klasy:
public class OtherReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = arg1.getAction();
if(action.equals(Intent.ACTION_BOOT_COMPLETED)) {
Log.d("new receiver","action is: boot");
}
}
}
tak samo jak drugi. Moje pytanie brzmi: dlaczego muszę zdefiniować osobny odbiornik dlaBOOT_COMPLETED
akcja?
Edytować: Próbowałem też wysłać akcję przezadb wedługtoi bez żadnego pozwolenia mógłbym go złapać za pomocąOdbiorca aplikacji klasa:
am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n com.blubuk/.AppReciever