transmissão de ação intencional BOOT_COMPLETED não funciona corretamente
Eu tenho uma classe de receptor ouvindo várias ações, mas não pode pegar oandroid.intent.action.BOOT_COMPLETED
açao. O que estou fazendo errado? aqui está o meu arquivo de manifesto:
<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>
como pode ser visto eu adicionei a permissão novamente dentro do receptor e o nome do receptor recebe o nome completo da classe como esteresponda sugere.
aqui está a classe do receptor de broadcast:
@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");
}
}
Quando eu executo o aplicativo, o receptor capturaandroid.intent.action.PACKAGE_REPLACED
mas quando eu reiniciar o telefone, o receptor não pega oBOOT_COMPLETED
.
No entanto, quando eu comentar no.OtherReceiver
noMainfest arquivo pode pegá-lo!
aqui está o código desta classe:
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");
}
}
}
exatamente o mesmo que o outro. Então, minha pergunta é por que eu preciso definir um receptor separado para oBOOT_COMPLETED
açao?
Editar: Eu também tentei enviar a ação viaadb de acordo comisto, e sem qualquer permissão eu poderia pegá-lo com oAppReceiver classe:
am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n com.blubuk/.AppReciever