BroadcastReceiver for usb附件消息

时间:2013-12-18 13:17:12

标签: java android broadcastreceiver

我有一个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类,因为在每件事开始之前我都想要他。

任何人都可以提出建议吗?

谢谢!!

3 个答案:

答案 0 :(得分:0)

看看here
enter image description 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检查这个答案。

最初请原谅我糟糕的英语,请原谅我的错误回答。此致