2017-05-06 4 views
0

私は、USBデバイスを直接使用する必要があるAndroidの組み込みシステムを構築しています。デバイスの起動時にアプリが起動します。ただし、USBデバイスに正常にアクセスするには、まず許可を求めなければなりません。許可のポップアップが表示されないようにする。初めてintent-filterを使用してユーザーが許可した後に直接アクセス許可を得る方法があることはわかっていますが、これが最も理想的な方法かどうかはわかりません。私のデバイスは根っからのアンドロイド開発ボードなので、基本的に私はシステム内の何かを変更することができます。私はすべての許可データが/data/system/packages.xmlに格納されていることを知っていますが、USB許可は実際のユーザー許可ではありません。私はインテントフィルタCUSこの情報を格納するために、このような場所があるはずだと思うシステム構成によってアンドロイドのUSB許可を得る方法

For app: com.aaa.app, vendorId="1111" and productId="1111", permission="true". 

:私はこのようなすべてのUSB権限を格納/data/system/packages.xmlのような場所があるかどうかを知りたいですこれが必要です。誰でもシステムでどのファイルを調べるべきかを知っていますか?ありがとう

答えて

0

調査の結果、最終的にこのファイルが保存されている場所が見つかりました。 Androidのソースコードを見て、com.android.server.usb.UsbSettingsManager(https://github.com/android/platform_frameworks_base/blob/4b1a8f46d6ec55796bf77fd8921a5a242a219278/services/usb/java/com/android/server/usb/UsbSettingsManager.java)を見つけた場合、すべてのUSB関連の権限機能がここにあります。そして、あなたはmSettingsFileを検索することができ、あなたには、いくつかのコード行を見つけます:あなたが見れば

mSettingsFile = new AtomicFile(new File(
      Environment.getUserSystemDirectory(user.getIdentifier()), 
      "usb_device_manager.xml")); 

その後EnvironmentクラスgetUserSystemDirectory方法を掘り下げ、あなたがusb_device_manager.xmlファイルを見つけます、通常は(システムおよびENV変数に依存しています

/data/system/users/0/usb_device_manager.xml

0に位置する環境のソースコード)でのuserIdあります。これはあなたの場合には非常に可能性があります。私はアプリにUSB許可を与える場合は、ファイル内に、それは次のように表示されます:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<settings> 
    <preference package="com.xxxx.testusb"> 
     <usb-device vendor-id="1003" product-id="9220" class="0" subclass="0" protocol="0" manufacturer-name="Unknown" product-name="BlendMicro 8MHz" serial-number="" /> 
    </preference> 
</settings> 

あなたは、このアプリをアンインストールする場合は、このエントリは自動的に削除されます。

これは私が今発見したより詳細な説明です。 https://groups.google.com/forum/#!topic/android-platform/3duEI8rFERo

関連する問題