1

イベント:

1.USB デバイスが接続されている。

  1. 「この USB デバイスが接続されているときに appName を開きますか?」というプロンプトが表示されます。
  2. キャンセルを押す -> アプリは開いたまま | [OK] を押す -> アプリが再起動します

必要な動作:アプリがフォアグラウンドにない場合、アプリはダイアログを表示せずにアプリを自動的に開きます。または、アプリがフォアグラウンドにある場合、ユーザーが [OK] を押してもアプリは再起動しません。

解決策の試み:すべてのアクティビティの起動モードが に設定されていることを確認してみました"SingleTask"。このソリューションはここで機能しましたが、同じことをしてもアプリは再起動しました。

一言で言えば質問:デバイスが接続されているときにユーザーがアプリを開くように言ったときに、アプリの再起動を停止するにはどうすればよいですか? または、この USB デバイスが接続されているときにアプリを起動できるようにしながら、このプロンプトを完全に停止するにはどうすればよいですか?

アプリが接続されたデバイスへのアクセスを許可するかどうかを尋ねるプロンプトを停止することを扱う同様の質問を見てきましたが、私の問題は別のプロンプトを扱っています。

前もって感謝します。

4

1 に答える 1

0

アプリはIntentFilterAppChooserまたはLauncherダイアログで使用します https://developer.android.com/guide/components/intents-filters.html

IntentFilterこれは、 onを使用すると常に発生しますandroid.hardware.usb.action.USB_DEVICE_ATTACHED。もう 1 つの可能性は、ダイアログが、USB 接続イベントをキャプチャする複数のアプリ (または同じアプリまたはアプリの複数のインスタンス) がある場合に呼び出されるAppChooserまたはランチャー ダイアログであるということです。Cancelこれが、アプリを押しても開いたままになる理由です。

インテント フィルタの使用

アプリケーションで特定の USB デバイスを検出するには、インテント フィルターを指定して、インテントをフィルタリングします android.hardware.usb.action.USB_DEVICE_ATTACHED。このインテント フィルターと共に、製品やベンダー ID などの USB デバイスのプロパティを指定するリソース ファイルを指定する必要があります。デバイス フィルタに一致するデバイスをユーザーが接続すると、アプリケーションを起動するかどうかを尋ねるダイアログが表示されます。ユーザーが同意すると、デバイスが切断されるまで、アプリケーションにはデバイスへのアクセス許可が自動的に付与されます。

https://developer.android.com/guide/topics/connectivity/usb/host.html

これは、イベントに内部的にリンクされているシステム ダイアログであるため、無効にするのは困難です。https://developer.android.com/guide/topics/manifest/activity-alias-element.htmlを使用する可能性があり ます。インテントをルーティングできます。android.hardware.usb.action.USB_DEVICE_ATTACHED<activity-alias>

http://www.stackoverflow.com/questions/40182096/usb-permissions-without-prompt/40182413#40182413

http://blog.danlew.net/2014/01/16/preserve-your-launchers-use-activity-alias/ (各アクティビティのインスタンスを 1 つだけ持つ方法はありますか? )

于 2017-02-19T23:19:38.630 に答える