基于Android示例的颤振应用程序启动时自动启动已完成,但不起作用

基于Android示例的颤振应用程序启动时自动启动已完成,但不起作用,android,dart,flutter,startup,Android,Dart,Flutter,Startup,在设备启动时,有很多使用BOOT_COMPLETED启动应用程序的示例。。 我已经尝试对我的颤振应用程序使用这些示例。让它启动应用程序。这是一个简单的标牌应用程序,显示图像。基本上类似于画框 在下面的示例代码中,应用程序正在编译,但是,例如,当我重新启动模拟器时,代码似乎没有任何效果 我的猜测是,我没有调用正确的代码来实际启动应用程序。。我不是一个安卓devaloper,所以我让issus知道到底发生了什么。 清单如下 <manifest xmlns:android="http://sch

在设备启动时,有很多使用BOOT_COMPLETED启动应用程序的示例。。 我已经尝试对我的颤振应用程序使用这些示例。让它启动应用程序。这是一个简单的标牌应用程序,显示图像。基本上类似于画框

在下面的示例代码中,应用程序正在编译,但是,例如,当我重新启动模拟器时,代码似乎没有任何效果

我的猜测是,我没有调用正确的代码来实际启动应用程序。。我不是一个安卓devaloper,所以我让issus知道到底发生了什么。 清单如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="au.net.digitall.cmplayer">

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

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="cm_player"
    android:icon="@mipmap/ic_launcher"
    tools:ignore="GoogleAppIndexingWarning">
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/cmTheme2"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">

        <meta-data
            android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
            android:value="true" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <receiver
        android:enabled="true"
        android:name=".StartCmPlayerServiceAtBootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
</application>
这一切都会编译和运行,但在重新启动时不会发生任何事情。
感谢你的帮助非常感谢迈克M。 他的建议并指向另一个基于android的讨论,给了我足够的信息在引导时归档autostart。对上述示例的代码更改如下所示

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="au.net.digitall.cmplayer">

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

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="cm_player"
    android:icon="@mipmap/ic_launcher"
    tools:ignore="GoogleAppIndexingWarning">
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/cmTheme2"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">

        <meta-data
            android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
            android:value="true" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <receiver
        android:enabled="true"
        android:name=".StartCmPlayerServiceAtBootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
</application>
在StartCmPlayerServiceAtBootReceiver类中, 改为

public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
        Intent mIntent = new Intent(context, MainActivity.class);
        mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(mIntent);
    }
}

再次感谢,我希望其他Flitter开发者会觉得这很有用。

您需要在安装后启动一次
MainActivity
,使您的应用程序脱离停止状态。我不确定你说的“编译并运行”是否就是这个意思。除此之外,您可能会在
广播接收器
中遇到异常,由于在该
上下文上启动
活动
,您需要在
意图上添加
意图。在
意图
上标记活动
新任务。:。我们在颤振应用程序中在哪个文件中添加此代码?使用上述代码时,我仍然没有得到任何结果。我没有收到任何错误,但重新启动仿真器没有任何作用。在本例中,您必须将此代码添加到Mainactivity.java文件旁边的StartCmPlayerServiceAtBootReceiver.java文件中。我在Kotlin文件夹中只有一个Mainactivity.kt。这个java文件在那里也可以工作吗?