我有一个可在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启动我的应用程序。
我哪里错了?
答案 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>