2017-04-12 29 views
0

私はAndroidには新しく、他のポストのコードスニペットを使用してプロジェクトをビルドしています。デバイスに新しいディレクトリとファイルを作成するのに苦労しています。私は次のコードを使用していますが、このパスの作成が成功したことを確認することができません。私は私のラップトップに自分の携帯電話をマウントし、 "/ My/Files"フォルダに "MyRecording.pcm"という名前のファイルを見つけることができるようにしたい。 mkdirs()のブール値を使用して、デバイス上にパスが作成されているかどうかを確認しています。そのパスが作成されなかった場合、TextViewは「ディレクトリは存在しません」と表示します。それ以外の場合は、MyRecording.pcmというファイルが作成されます。 mkdirs()の結果は無視されます。助けてください。外部ストレージに新しいファイルパスを作成できません

File path = new File(Environment.getExternalStorageDirectory() + "/My/Files"); 
    path.mkdirs(); 
    if(!path.exists()) { statusText.setText("Directories do not exist");} 
    else recordingFile = File.createTempFile("MyRecording", ".pcm", path); 
+0

エラーは何ですか/ – Kaushal28

+0

mkdirs()の結果は無視されます。あなたが望むなら、あなたはそれを無視することを歓迎します。それを超えると、[実行時アクセス許可](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it)が必要になる場合があります。ファイル](https://stackoverflow.com/questions/32789157/how-to-write-files-to-external-public-storage-in-android-so-that-they-are-visibl)。 – CommonsWare

+0

@CommonsWareありがとう! SDK 23以降のこれらのアクセス許可やファイルのインデックス付けについてはわかりませんでした。それは良いアドバイスです! – Lefty

答えて

1

マニフェストに権限が設定されていますか?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

また、Android Studioは、ディレクトリが作成されたかどうかを示すブール値を返すため、mkDirs()に関する警告を表示します。それはあなたが決して結果を使用しなかったことを思い出させるだけです。それは問題ではありません。

+0

答えをありがとう。私は、既に外部ストレージに書き込むためにManifestファイルに正しいアクセス権があることを確認しました。私はこのコードを実行することを期待していたし、携帯電話をラップトップにマウントするとファイルエクスプローラで新しいディレクトリとファイルを実際に見つけることができるようになりました。そのような運はありません。私はmkdirs()が実際にこれらのサブフォルダを作成すると考えましたが、そうでないか、何かが欠けています。 – Lefty

+0

私は何かに乗っていると思う、私は実現しなかった。私のアプリは25の最小SDKを規定します。私はSDK 23以降で何かを読んだだけで、実際に外部ストレージへの書き込みを可能にするためのユーザー権限メソッドを明示的に設定する必要があります。 – Lefty

+0

ああ、実際にはマニフェストで宣言するだけでなく、実行時にアクセス許可を求める必要があります。私はあなたが既にそれを見ていると確信していますが、それを実装するためのAndroid開発者ページ[https://developer.android.com/training/permissions/requesting.html]です。互換性メソッドを使用して、すべてのバージョンのランタイムアクセス権を一度にカバーする方法を示します.23以下を含みます。コード内のバージョンチェックを避けるのに役立ちます。 – jburn2712

関連する問題