使用“com.android.future.usb.accessory”库时应用程序无法启动

Posted

技术标签:

【中文标题】使用“com.android.future.usb.accessory”库时应用程序无法启动【英文标题】:Application won't start when using `com.android.future.usb.accessory` library 【发布时间】:2016-01-02 22:36:59 【问题描述】:

我正在关注 this guide 在 API 10 上使用 com.android.future.usb 库。

我做了以下事情:

从 SDK 管理器安装了 Google API 10: 选择 Google APIs 10 作为我的项目构建目标: 将这些添加到manifest

<uses-feature android:name="android.hardware.usb.accessory" /><manifest> 的直子)

<uses-library android:name="com.android.future.usb.accessory" /><application> 的孩子)

<meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/accessory_filter" /> (第一个activity 的孩子)

创建了res/xml/accessory_filter.xml,如上所述here。

这样做让我可以使用com.android.future.usb 及其子类。但问题是manifest 更改后应用程序无法启动。

这是一个有根设备,并且该应用程序由操作系统配置为在设备启动时自动启动。

我应该做任何其他配置来完成这项工作吗?也许应该在固件中做点什么?

编辑:

这里是与 usb 相关的所有内容的 logcat:

USB mass storage support is not enabled in the kernerl
usb_configuration switch is not enabled in the kernerl
Volume usb state changing -1 (Initializing) -> 0 (No-Media)
Ignoring unknown switch 'usb_connected'
Package com.example.gui requires unavailable shared library com.android.future.usb.accessory: failing!
Skipping unknown volume '/mnt/usb'
USB Service
This kernel does not have USB configuration switch support

【问题讨论】:

But the problem is the application won't start after the changes in manifest. 请说明您遇到的错误并将您的 logcat 粘贴到此处。 【参考方案1】:

不清楚the application won't start是什么意思。

如果您希望应用程序启动 automatically on device startup。这有这样做的说明:How to start an Application on startup?

如果问题是应用程序无法编译,则需要有关遇到的错误的更多信息。

您提到您根据您提供的链接对清单进行了更改。该示例还包括一个intent-filter 标记到清单中的活动元素,您没有提及。因此清单中的活动元素将有两个意图过滤器:

        <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
        </intent-filter>

        <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
                   android:resource="@xml/accessory_filter" />

    </activity>

那么,您的应用程序未启动可能是因为您从活动清单中删除了 MAIN / LAUNCHER 意图过滤器?

【讨论】:

正如我所说的“应用程序不会在清单中的更改之后启动 。”这意味着,应用程序用于在更改之前启动。因此,链接“如何在启动时启动应用程序”是不相关的。 启动应用程序不需要意图。意图只是等待操作('usb_attached')。不,我没有删除主要意图......

以上是关于使用“com.android.future.usb.accessory”库时应用程序无法启动的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份