使用<intent-filter>时,在实际设备上缺少Intent

时间:2015-09-16 12:39:55

标签: android android-intent intentfilter sony sony-xperia

好的,这个问题在SO上被多次询问,但没有一个问题解决了我的问题。根据我的理解,通常大多数其他人都去了BroadcastReceiver

无论如何,问题。我的一个活动应该在USB设备连接到手机后读取数据。为了执行此操作,我根据USB Host guide在我的intent-filter文件中创建了AndroidManifest.xml,如下所示:

<activity
            android:name=".activity.GetMeterDataActivity"
            android:label="@string/title_activity_get_meter_data" >

            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />
</activity>

这在我使用的模拟器中效果很好,并且在我连接设备时启动了Activity。但是,在真实设备上没有任何反应。如果我按照建议的方式注册BradcastReceiver作为指南上的替代解决方案,则收到Intent并且我要求允许使用它并且它有效。然而,我发现后一个解决方案不那么整洁,因为你必须自己征得许可,并且真的更愿意在清单中有<intent-filter>

尝试:

  • 我不在device_filter.xml
  • 中使用十六进制值
  • 阅读我所能找到的有关SO的所有相关帖子,但找不到我的问题的解决方案。
  • 在预期的活动与<intent-filter>活动之间移动MAIN但未成功。
  • onCreate()onResume()中记录的意图,没有或只是android.intent.action.MAIN

任何指针都会非常感激。

EDIT1: 在升级到Lollipop之后,这似乎是一个索尼问题,并且设备突然被列入黑名单。我可以在日志中看到这一点。

09-16 21:23:07.272     860-1279/? W/ContextImpl? Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1346 com.android.server.usb.UsbSettingsManager.blacklistedDeviceAttached:757 com.android.server.usb.UsbHostManager.endUsbDeviceAdded:242 com.android.server.usb.UsbHostManager.monitorUsbHostBus:-2 com.android.server.usb.UsbHostManager.access$000:49

如果它确实被列入黑名单,我仍然可以使用BraodcastReceiver来使用该设备,这有点奇怪。

1 个答案:

答案 0 :(得分:0)

索尼过滤了我想读的意图。随着索尼Xperia Z3 Compact软件的更新版本编号为23.4.A.1.232,这不再是一个问题而且我收到了Intent。