2013-03-06 23 views
4

我有一個Android應用程序,這將與USB設備交互,在Android developer official documentation for Obtaining permission to communicate with a device它說:的Android USB設備的相關權限和意圖過濾

注意:如果您的應用程序使用一個意圖過濾器來發現USB設備當他們連接時,如果用戶允許您的應用程序處理意圖,它會自動獲得權限。如果沒有,您必須在連接到設備之前在您的應用程序中明確請求許可。

Intent Filter將在AndroidManifest.xml中聲明並使用資源文件,該文件將包含vendor-id和product-id。

如果我插入我的設備沒有任何反應,即使使用聲明的意圖。 所以我必須使用相同的官方文檔中提到的方法,其中涉及明確要求許可。

這可以工作,我可以與設備進行通信,但恰巧用戶必須在每次啓動應用程序或設備重新連接時都給予權限。最後,這將向用戶發送一條消息,要求在每次設備插入和應用程序啓動時進行確認,並且每次都提供相同的許可權是不可取的。

因此,如果「...自動接收許可...」部分不起作用。

如何使意圖過濾器工作?
我錯過了什麼?
我有其他的選擇嗎?


此問題:Android USB Permissions Dialog never appears有相反的問題,但解決方案不適用於我。
使得應用程序的系統應用程序,繞過權限會爲我無論是作爲這裏所說的不工作:USB open accessory permissions through a service in android


任何幫助是極大的讚賞

回答

0

我不undersand你的問題很好,但我認爲解決方案是這樣的..

<activity ...> 
<intent-filter > 
      <action android:name="android.intent.action.MAIN" />     
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
      <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> 
      <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter"/> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 
+0

我在我的項目中確切地說,但根據應該足以授予訪問USB設備的權限的文檔。但它不起作用,因此這個問題。 – Anibaru 2013-03-07 13:47:20

4

我有同樣的問題,在你的AndroidManifest.xml中使用該設備寫入此活動:

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

你也有你的XML資源來創建一個過濾器文件,如RES/XML/device_filter:

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <usb-device vendor-id="26214" product-id="26214" /> 
    </resources> 

在這裏廠商ID和產品ID在小數給予 - 以上VID和PID都是0x0123。你看到USB device access pop-up supression?

你不能調用mManager.requestPermission(device,mPermissionIntent),所以你必須直接調用mManager.openDevice(mDevice);並且您可以正常通信而無需顯示權限彈出消息。

問候, 塞繆爾Reque samo_reque @ hotmail的。com

+0

我會檢查你的答案,但我已經有device_filter xml – Anibaru 2013-05-27 21:12:58

+0

只有第一次運行應用程序請求權限的意圖過濾器,但不要求代碼調用mManager.requestPermission(device,mPermissionIntent)是一個部分解決。 – 2013-07-23 19:47:48

+0

@SamuelReque:我有我的廣播接收器類下的清單權限,而不是一個活動,但每次我重新附加USB時,我仍然會收到這些彈出窗口(檢查複選框也是沒有用的)。怎麼辦? – Basher51 2014-07-03 07:04:51