2016-11-15 22 views
0

接続されているUSB OTGドライブから非常に特定のファイルを読みたいと思います。これはUSBスティックに保存する必要があるテキストファイルで、特定の名前のファイル、たとえばmyFile.txtを読み込む必要があります。このようなユーザー入力を得ることは理解できませんが、ユーザーフレンドリーではありません。これは実装するように言われています。ストレージアクセスフレームワーク経由でOTGファイルを取得する方法

しかし私の問題は、USBドライブのマウントポイントがたくさんあることです。私の電話では/storage/USBStorage1、友人には/storage/[HEX_ID]です。私はそれらのすべてを手に入れようとしましたが、それは不可能です。 Nexusの電話機では、/mnt/media_rw/[HEX_ID]に搭載されており、ルートアクセスが必要です。

私はちょっと調べてSAFを見つけましたが、ユーザーが直接選択せずにファイルを開くために使用する方法については何も見つかりませんでした。私はピッカーが現れないようにします。私はちょうど[USB_OTG_PATH]/myFile.txtが存在するかどうかをチェックしたいと思っています、もし存在すれば私はそれを読んでいます。

そしてサイドノートでは、/mntフォルダ(media_rwを除く)を読み取るにはルートアクセス権が必要ですか?

+0

によっても異なるが、はい、それはgetExternalFilesDirsで配信 'File'オブジェクト()' [のいずれかになります。 – greenapps

+0

@greenapps:ファイルがこれらのディレクトリのいずれかに存在する場合のみ。 OPは、このファイルを任意の場所に置くことを望んでいるようです。 – CommonsWare

+0

@CommonsWare:そのFileオブジェクトから、OPはドライブのルートを引き出すことができます。そこから彼は彼の道を追加する。ルートは '/ Android /'の前の部分です。 – greenapps

答えて

0

私は、このためのオプションがないためであるユーザーの直接選択

せずに任意のファイルを開くためにそれを使用する方法についての何かを見つけることができませんでした。

私は[USB_OTG_PATH] /myFile.txtが存在するかどうかを確認したいだけです。存在する場合はそれを読みたいと思います。

これはサポートされていません。

ファイルがgetExternalFilesDirs()getExternalCacheDirs()によって返されたディレクトリのいずれかに位置している場合、およびgetExternalMediaDirs()その後、あなたはそれが直接、通常のJavaファイルI/Oを使用してアクセスすることができます。しかし、AFAIKは、あなたのアプリケーションを実行する際にそのディレクトリを作成する必要があります—別の開発者が、ディレクトリを事前に作成しようとすると問題に遭遇しました。あなたのユースケースでは、このアプローチは実用的ではありませんが、私は間違っていますが、それはあなたにとって有益です。

私は/ mntフォルダ(media_rwを除く)を読むためにrootアクセス権を持っている必要がありますか?一般的に

実際には答えが現代のシステムではなどのデバイス、Android OSのバージョン、

+0

いいえ、私のファイルは外部ディレクトリにありません。 –

+0

@ III.6:「USBスティックに搭載されているはずです」 - 「getExternalFilesDirs()」、「getExternalCacheDirs()」と表示されます。 、 'getExternalMediaDirs()'はすべて 'File []'を返します。その配列に2つ以上のエントリがある場合、2番目以降のものはリムーバブルストレージ(USB OTGドライブなど)にあります。通常のJavaファイルI/Oを使用して、アクセス権なしで読み書きできるディレクトリです。 – CommonsWare

+0

しかし、そうではありません。私の電話機では、それぞれがサイズ1の配列を返し、それらのすべてに '/ storage/emulated/0/Android /'という接頭辞があり、スティックは '/ storage/USBstorage1'にマウントされています。 –

関連する問題