2016-03-26 28 views
1

Ich habe BootComplete verwendet und Erlaubnis erlauben, und es kann immer noch nicht Autostart, dann versuche ich Wake Lock zu verwenden, aber es kann nicht funktionieren. Außerdem versuche ich es als Dienst zu machen, aber der Dienst taucht nicht in meinem Telefon auf. Gibt es etwas, das ich vermisst habe?Wie kann ich meine App nach dem Neustart in Android automatisch starten?

 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 
    } 

} 

In meiner Manifest-Datei:

 <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

Ab API 3.1, Sie müssen sein, um eine 'Activity' in Ihrer Anwendung mindestens einmal nach der Installation starten um es aus dem Zustand _stopped_ zu bringen. Bis dahin wird Ihr Receiver nicht funktionieren. Außerdem muss Ihr Receiver exportiert werden. Stellen Sie also das 'exported' Attribut auf' true' oder entfernen Sie es einfach. –

+0

yeah dein rechtes Mike; entferne exportierte und aktivierte Attribute; Auch beim Starten von Aktivitäten mit Empfängern brauchen Sie dieses Flag; ** intent.addFlags (Absicht.FLAG_ACTIVITY_NEW_TASK); ** – DJphy

Antwort

0

tun, was Sie in OnReceive beabsichtigen -

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); 
    } 
} 

im 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> 

hinzufügen permission-

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

Auch müssen Sie Ihre Anwendung von Aktivität mindestens einmal starten und Ihr Block sollte außerhalb Block in manifest