IOT_LAUNCHER活动未在启动时启动

时间:2017-12-06 17:41:19

标签: android xamarin xamarin.android android-things

我有一个可在Android上运行的Xamarin应用。我试图在Android Things上的Raspberry Pi 3上运行它。我已经刷新了默认图像,当连接到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,看看清单确实有正确的意图过滤器,但是当我重新启动设备时,我会得到标准的Android Things仪表板。

<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启动我的应用程序。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

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

  

Android Things希望一个应用程序在其清单中公开“主页活动”,作为系统在启动时自动启动的主要入口点。此活动必须包含一个包含CATEGORY_DEFAULT和IOT_LAUNCHER的intent过滤器。

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