2016-03-21 17 views
1

Ich entwickle eine Cordova App, die ich ausführen möchte, wenn das Gerät (neu) bootet. Jetzt habe ich etwas nativen Android-Code implementiert, um dies auf Android 5.0.2 (Galaxy Tab S2) funktionieren zu lassen und das funktioniert gut. Aber ich habe Probleme, wenn ich die App auf einem Gerät mit 4.4.4 und 4.2.2 (Minix Z64 und Minix X5) laufe.App startet nicht beim Start auf allen Geräten

Die Aktivität ich für die Inbetriebnahme bekam:

public class StartupActivity extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
      Intent i = new Intent(context, MainActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

      context.startActivity(i); 
     } 
    } 
} 

und einige Informationen in meiner Manifest-Datei

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<receiver android:enabled="true" android:exported="true" android:name="package.StartupActivity" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

So ist das Problem, dass der App auf meinem Galaxy Tab S2 funktioniert gut, da es beginnt beim Booten. Aber auf den anderen zwei Geräten, die verschiedene Versionen von Android ausführen, reagieren auf diese Anfrage nicht.

Ich bin nicht so vertraut mit Android-Entwicklung, aber da dies auf einer neueren Version von Android funktioniert Ich denke, dies ist ein Kompatibilitätsproblem, wenn ja, gibt es eine Workaround dafür? Vorzugsweise ohne das Gerät zu verwurzeln.

+0

zu lösen versuchen zu entfernen '' von Intent-Filter . Und stellen Sie sicher, dass die App im internen Speicher installiert ist. – fRoStBiT

+0

Danke für den Vorschlag, leider hat dies keinen Einfluss auf das Verhalten auf dem Minix ' –

Antwort

1

Managed das Problem, indem er erklärt den Paketnamen der App vor MainActivity.class und den Aufruf der Flagge FLAG_ACTIVITY_NEW_TASK statt FLAG_ACTIVITY_CLEAR_TOP

public void onReceive(Context context, Intent intent) { 
    Intent serviceIntent = new Intent(context, MY_PACKAGE_NAME.MainActivity.class); 
    serviceIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(serviceIntent); 
} 
Verwandte Themen