安卓USB通訊之許可權管理

2021-08-13 15:23:44 字數 1813 閱讀 5269

這篇部落格是針對之前的一篇文章android開發之usb資料通訊作的補充。主要是在開發中發現了另外兩個不得不面對的問題:

usb訪問許可權處理。

usb裝置插拔狀態監聽。

—usb訪問許可權處理——-

當我們安卓手機第一次安裝我們usb相關功能的apk時,正常情況下,手機會彈出個類似於「xx應用訪問usb裝置…」的提示框,如果使用者不接受的話,那肯定是不能進行usb通訊的。

要怎麼才能讓手機在安裝應用時彈出對應地提示框呢?答案就是在我們的專案中新增相應的許可權訪問的**。

1,在activity的oncreate()方法中註冊廣播:

private pendingintent mpermissionintent;

....

mpermissionintent = pendingintent.getbroadcast(this, 0, new intent(action_usb_permission), 0);

//註冊usb裝置許可權管理廣播

intentfilter filter = new intentfilter(action_usb_permission);

registerreceiver(usbreceiver, filter);

2,廣播處理:

private

final broadcastreceiver usbreceiver = new broadcastreceiver()

} else }}

}};

3,我們在查詢到usb裝置時,也應該判斷下裝置許可權,如果沒有許可權,則請求許可權:

if (!manager.haspermission(usb)) 

//注:usb是指usbdevice物件,manager是指usbmanager物件。

—-usb裝置插拔狀態監聽——

如果使用者在使用應用的過程中,有意或無意中拔出了usb裝置後,程式肯定也是不能進行操作的,當然我們也要做相應地判斷。

1,同樣是註冊廣播:

intentfilter filter = new intentfilter();

filter.addaction(usbmanager.action_usb_accessory_attached);

filter.addaction(usbmanager.action_usb_device_attached);

filter.addaction(usbmanager.action_usb_device_detached);

registerreceiver(usbstatereceiver, filter);

2,廣播**處理:

private

final broadcastreceiver usbstatereceiver = new broadcastreceiver() else

if (action.equals(usbmanager.action_usb_device_detached)) }};

//注1:usbmanager.action_usb_device_attached對應的廣播在usb每次插入時都能監聽到,所以用這個就可以監聽usb插入。

//注2:usbmanager.action_usb_device_detached用來監聽usb拔出廣播。

//注3:網上有不少資料是說通過android.hardware.usb.action.usb_state對應的廣播來監聽usb插拔,我在開發中發現該action只在usb插入的時候能監聽到,拔出時沒有作

安卓usb資料接收

之前在論壇裡面求助了關於監聽資料接收的問題,因為第一次做這方面,可能我提的問題太簡單了,大神都不願意回答我,之前的帖子 晚上翻牆瀏覽 發現問題的解決辦法,原文是 最近老闆讓弄安卓和一塊板子通訊,現在的情況是我第一次傳送資料可以接受到 一些引數的初始化 然後我再傳送資料,就接收不到了,資料肯定是傳送成...

安卓許可權大全

總結了安卓的apk許可權,5.0以後的執行時許可權後面有空補充。訪問登記屬性 android.permission.access checkin properties 讀取或寫入登記check in資料庫屬性表的許可權 獲取錯略位置 android.permission.access coarse ...

安卓許可權筆記

筆記,本人學識有限,有錯誤請指正。在寫發現許可權挺重要的,幾乎都得用到,因為本人手機為安卓9.0版本,做啥都要申請許可權,寫了好幾個,都需要用到,因此,趁這個時間,看一下許可權方面,整理一段能夠直接用的許可權申請 高版本的安卓什麼許可權都需要獲取許可權 動態獲取。原本 低版本 是直接在android...