2016-03-24 25 views
0

私はアプリ内でassets-directoryのウェブサイトをホストするwebviewアプリを作成しました。 私のタブレットusbslotに挿入されたUSBstickを介してウェブサイトを更新したいと思います。 私はアンドロイド4.4で動作しない.MEDIA_MOUNTEDブロードキャストで最初に試しました。タブレット。 私は代わりのものを探して "MediaScannerConnection"を見つけました。 ここにいくつかの例がありますが、私の問題を解決するためにはあまり役に立たなかったのです。Androidがkitkat(4.4)のUSBストレージを検出しました

私は、USB-Storageが接続されているかどうかを検出し、その後にいくつかのコードを実行する機会を見つけるために、簡単できれいな解決策を探しています。 そしてこのUSBチェックをいつも実行させるのはどういう疑問です。私はそれをOnResumeメソッドに入れなければならないと思いますが、私はかなりshureではありません。

+0

の一環として、あなたが直接ディレクトリを呼び出すのではなく、使用しないでください(Environment.getExternalStorageDirectory()のような)ファイルを問い合わせるための "Enviroment" – Bonatti

答えて

2

BroadcastReceiverとAndroidManifest.xmlのコードを投稿してください。

マニフェストは、それが見過ごされがちだが、dataタグに注意してください

<application> 
    <!--- ... ---> 
    <receiver android:name=".UsbBroadcastReceiver" 
      android:exported="true" 
      android:enabled="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
      <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> 
      <data android:scheme="file" /> 
     </intent-filter> 
    </receiver> 
</application> 

ようになるはずです。

あなたのonReceive実装では、rootのrootへのURIはIntent#getData()から取得できます。

また、Android 6.0(M)以上では動作しません。 6.0の場合とあなたのコード上記の二つの方法のうちの1つを介してUSBへのアクセスを要求する必要があります。

1)UsbManager#requestPermission

2)Intent#ACTION_OPEN_DOCUMENT_TREEStorage Access Framework

+0

インテントフィルタ[android.hardware.usb.action.USB_DEVICE_ATTACHED](https: //developer.android.com/guide/topics/connectivity/usb/host.html#discovering-d) – OneWorld

関連する問題