7

USBデバイスと対話するAndroidアプリがあります。これは、デバイスと通信するための許可を取得するためのAndroid開発者の公式ドキュメントに次のように記載されています。

:アプリケーションが接続時にUSBデバイスを検出するためにインテントフィルターを使用する場合、ユーザーがアプリケーションにインテントの処理を許可すると、アプリケーションは自動的に許可を受け取ります。そうでない場合は、デバイスに接続する前に、アプリケーションで明示的に許可を要求する必要があります。

インテントフィルターは、AndroidManifest.xmlで宣言され、vendor-idとproduct-idを含むリソースファイルを使用します。

宣言されたインテントを使用しても、デバイスを接続しても何も起こりません。したがって、許可を明示的に求めることを含む同じ公式文書に記載されている方法を使用する必要があります。

これは機能し、デバイスと通信できますが、アプリが起動するたび、またはデバイスが再接続されるたびに、ユーザーが許可を与える必要があります。最後に、これにより、デバイスが接続されてアプリケーションが起動するたびに確認を求めるメッセージがユーザーに表示されます。毎回同じ権限を与えることは望ましくありません。

したがって、「...自動的に許可を受け取る...」の部分が機能していない場合。

インテントフィルターを機能させるにはどうすればよいですか?
私は何が欠けていますか?
他に選択肢はありますか?


この質問:Android USBアクセス許可ダイアログが表示されることはありませんが、逆の問題が発生しましたが、解決策は機能しません。
ここで説明したように、アプリをシステムアプリにして、権限をバイパスすることもできません。Androidのサービスを介したUSBオープンアクセサリの権限


どんな助けでも大歓迎です

4

2 に答える 2

0

私はあなたの質問をよく理解していませんが、解決策はこのようなものだと思います..

<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>
于 2013-03-06T18:53:36.277 に答える