2016-03-26 3 views
1

J'ai utilisé BootComplete et j'autorise la permission et il ne peut toujours pas démarrer automatiquement, alors j'essaie d'utiliser le verrou de réveil mais il ne peut pas fonctionner. Aussi, j'essaye de le faire en tant que service mais le service n'apparaît pas dans mon téléphone. Y at-il quelque chose que j'ai raté?comment puis-je autostart mon application dans android après le redémarrage?

 public class BootComplete extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 

{ 
      // This is the Intent to deliver to our service. 
      Intent serviceIntent = new Intent(context, AutoStartUp.class); 
      context.startService(serviceIntent); 

     } 
    } 

public class AutoStartUp extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
     // do something when the service is created 
    } 

} 

Dans mon fichier manifeste:

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

<service android:name=".SimpleWakefulReceiver"> 
      <intent-filter> 
       <action android:name="com.example.SimpleWakefulReceiver"/> 
      </intent-filter> 
     </service> 

     <receiver 
      android:name=".MainActivity$BootComplete" 
      android:enabled="true" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <service android:name=".AutoStartUp"> 
     </service> 
+1

Au API 3.1, vous avez besoin d'un 'Activity' dans votre application pour lancer au moins une fois après l'installation pour le sortir de l'état stoppé. Jusque-là, votre récepteur ne va pas travailler. En outre, votre récepteur doit être exporté. Autrement dit, définissez l'attribut 'exported' sur' true' ou supprimez-le. –

+0

ouais mike droit; supprimer les attributs exportés et activés; aussi lors du démarrage d'activités utilisant des récepteurs, vous avez besoin de ce drapeau; ** intention.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); ** – DJphy

Répondre

0

Faites ce que vous avez l'intention dans OnReceive -

public class BootupReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    try { 
     Thread.sleep(5000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    Log.e("BOOTUP", "received notification ......................"); 
    if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) 
    { 
     Log.e("BOOTUP","RECEIVED BOOT NOTIFICATION ........"); 
     Intent start_service = new Intent(context,MainService.class); 
     context.startService(start_service); 
    } 
} 

dans le Manifest add-

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

ajouter

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

Aussi, vous devez lancer l'application d'une activité au moins une fois et votre bloc doit être bloc à l'extérieur dans le manifeste