IOT_LAUNCHER activity 开机不启动

IOT_LAUNCHER activity not starting on boot

我在 Android 上为 运行 构建了一个 Xamarin 应用程序。我正在尝试 运行 它在 Raspberry Pi 3 上 Android 事情。我已经刷新了默认图像,当连接到 pi 时,我可以通过 Visual Studio 成功 运行 应用程序。

但是,我无法通过 adb 安装或创建捆绑包并通过 Android Things 控制台构建来启动应用程序。我相信我已经正确设置了清单。

我的 MainActivity 具有正确的属性:

Activity(Label = "PropertyVision", MainLauncher = true, Theme = "@style/PVLightTheme")]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { Intent.CategoryLauncher })]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { Intent.CategoryDefault })]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { "android.intent.category.IOT_LAUNCHER" })]

我可以通过 ADB 安装和 运行 APK,当撤回时我可以分析 APK 并看到清单确实具有正确的 intent-filters 但是当我重新启动设备时我得到了标准Android 事物仪表板。

<activity
    android:theme="@ref/0x7f0d0199"
    android:label="PropertyVision"
    android:name="md5cbdbb5fa2925f03038c91923122a6627.MainActivity">
    <intent-filter>
        <action
            android:name="android.intent.action.MAIN" />
        <category
            android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action
            android:name="android.intent.action.MAIN" />
        <category
            android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action
            android:name="android.intent.action.MAIN" />
        <category
            android:name="android.intent.category.IOT_LAUNCHER" />
     </intent-filter>
</activity>

使用 0.6.0 预览版。当我创建 bundle.zip 并通过 Android Things 控制台创建新版本时,它也会启动到标准仪表板,但我可以通过 adb 启动我的应用程序。

我哪里错了?

您希望您的清单在应用程序标记中包含 两个 个意图过滤器,一个用于调试,一个用于 IoT 启动。

Android Things expects one application to expose a "home activity" in its manifest as the main entry point for the system to automatically launch on boot. This activity must contain an intent filter that includes both CATEGORY_DEFAULT and IOT_LAUNCHER.

要通过 Activity 属性执行此操作:

[Activity(Label = "KeyPadEntry", Icon = "@mipmap/icon")]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { Intent.CategoryLauncher })]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { "android.intent.category.IOT_LAUNCHER", Intent.CategoryDefault })]
public class MainActivity : Activity
{
  ~~~
}

生成的清单在应用程序标记中应如下所示:

<activity android:name="md5228f519fe41cfb3cf46c839bf977fe9b.MainActivity"">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
   <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.IOT_LAUNCHER"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

    ~~~~

</activity>