我有一个FTDI udb自定义设备连接到我的平板电脑,我可以连接到他,但我想忽略该消息
允许应用“MyAPP”访问USB设备? [选中标记]默认使用此USB设备 取消确定
我正在尝试运行BroadcastReceiver,但消息是在reciver收到消息之前,有人可以提出建议吗
注意:我的设备已植根。 我的设备将是一个用户不在那里点击的面板。
我的代码是:
清单:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<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" >
</meta-data>
</activity>
<receiver android:name=".LaunchReceiver" >
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
</receiver>
</application>
LaunchReceiver类:
public class LaunchReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("UUU", "on launcher receive");
}
}
问题是该消息是在我的应用程序启动之前的
另一个问题是我不知道在哪里创建LaunchReceiver类,因为在每件事开始之前我都想要他。
任何人都可以提出建议吗?
谢谢!!答案 0 :(得分:0)
看看here。
当您在onCreate
中调用LauncherReceiver时,您在应用启动之前调用了它。这就是您在应用开始之前收到消息的原因。
答案 1 :(得分:0)
从活动代码中删除intent-filter和元数据。您还必须将元数据添加到reciver标记(我相信USB_ACCESSORY_ATTACHED操作需要元数据)。有了它,只会为LaunchReceiver收集消息。
其他解决方案是将reciver标记移动到活动标记之前,因为该消息首先由LaunchReceiver接收,之后接收到MainActivity。
当事件发生时,LaunchReceiver将被实例化为SO,将其放在root proyect包中。
我希望我帮助你并原谅我的英语不好。来自委内瑞拉的问候。
答案 2 :(得分:0)
不好意思,我之前的回答是错的......如果USB_ACCESSORY_ATTACHED在reciver和服务中工作,我正在讨厌,但显然不是这样。 Here有同样的问题。他们说他们说USB_ACCESSORY_ATTACHED和USB_ACCESSORY_DETACHED动作在reciver中不起作用,只适用于de活动。我可以用proyect检查这个答案。
最初请原谅我糟糕的英语,请原谅我的错误回答。此致