2016-03-21 54 views
1

我正在開發一個Cordova應用程序,我想在設備(重新啓動)時運行。現在我實現了一些原生的Android代碼,使其在Android 5.0.2(Galaxy Tab S2)上工作,並且工作正常。但是,在運行4.4.4和4.2.2(Minix Z64和Minix X5)的設備上運行應用程序時,我遇到了一些麻煩。應用程序沒有在所有設備上啓動

我得到了啓動活動:

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

在我的清單文件中的一些信息

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

所以,問題是,應用程序,因爲它開始工作在我的Galaxy Tab S2罰款在開機時。但在運行不同版本的Android的另外兩臺設備不響應​​此請求。

我對Android開發並不熟悉,但是因爲這是在研究Android的新版本,所以我認爲這是一個兼容性問題,如果有的話,是否有解決方法?優選地,不使設備生根。

+0

嘗試以除去'<種類... />'從意圖濾波器來解決這個問題。並確保應用程序安裝到內部存儲。 – fRoStBiT

+0

感謝您的建議,不幸的是這對Minix的行爲沒有任何影響, –

回答

1

管理通過聲明中的MainActivity.class前面的應用程序的包名稱和呼叫標誌FLAG_ACTIVITY_NEW_TASK代替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); 
} 
相關問題