应用程序无法在启动时在所有设备上启动

时间:2016-03-21 13:48:51

标签: java android cordova

我正在开发一个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上工作,我认为这是一个兼容性问题,如果是这样,是否有解决方法?最好不要使设备生根。

1 个答案:

答案 0 :(得分: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);
}