2011-11-02 28 views
10

Manifiesto:Receptor de arranque no funciona

  <application android:icon="@drawable/icon" android:label="@string/app_name"> 
      <activity android:name=".AlarmActivity" 
         android:label="@string/app_name"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
       </intent-filter> 
      </activity> 
      <receiver android:name="CallReciver"> 
       <intent-filter> 
        <action android:name="android.intent.action.PHONE_STATE"> 

</action> 
       </intent-filter> 
      </receiver> 
      <receiver android:name=".SmsReceiver"> 
       <intent-filter android:priority="1000"> 
        <action android:name= 
         "android.provider.Telephony.SMS_RECEIVED" /> 
       </intent-filter> 
      </receiver> 
      <receiver android:name=".OnBootReceiver"> 
      <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
      <service 
       android:enabled="true" 
       android:name=".AlarmService"> 
      </service> 
     </application> 
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_PHONE_STATE"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.WRITE_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.SEND_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.RECEIVE_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.INTERNET"> 
     </uses-permission> 

receptor:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 

public class OnBootReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("Test","booot"); 
     Toast.makeText(context, "Test", Toast.LENGTH_LONG).show(); 
    } 
} 

receptor no funciona. Apago y enciendo mi dispositivo y no pasa nada. SMS y Call Receiver en este proyecto funcionan bien. Receptor de SMS y receptor de llamadas: funciona bien. Primera publicación actualizada: se ha agregado el manifiesto completo.

Respuesta

47

Si tiene un dispositivo HTC, también necesita registrarse en "android.intent.action.QUICKBOOT_POWERON". Por lo que la entrada en el manifiesto debe ser:

<receiver android:name=".OnBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver>  

En mi HTC, si apago el dispositivo y vuelva a encenderlo durante un tiempo llegué QUICKBOOT_POWERON y sin BOOT_COMPLETED.

Si apago el dispositivo y extraigo la batería por un tiempo - recibí BOOT_COMPLETED después del inicio.

+0

wow, ¡esta es una publicación útil! – slinden77

6

permiso Put

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 
+0

Lo tengo en manifiesto. – user1021984

+2

¿Puso el receptor en la etiqueta de la aplicación del manifiesto – Rasel

+0

qué etiqueta debo poner? – user1021984

1

Prueba esto ::

<receiver android:enabled="true" android:exported="true" 
     android:name=".OnBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

Saludos ... !!!

+0

Samsung A3 necesitaba que la marca "enable" y "exported" se estableciera en "true", pero en Huawei 6P y otros 2 dispositivos, creo que se establecieron en true por defecto. Gracias Rohit por la solución :) –

3

También sepa que en Android> = 3.1 la aplicación se instala en estado 'detenido' y no obtendrá los eventos de arranque y apagado hasta que el usuario 'haga algo' con la aplicación al menos una vez. Ver this post on the topic.

Cuestiones relacionadas