私はAndroid=開発に非常に慣れていないので、初心者の助けが必要です...
Whatsappと同じように、DatabasesディレクトリとImagesディレクトリの2つのディレクトリを持つアプリを作成しています。
他のアプリのフォルダーと同じように、電話を閲覧しているときにファイルマネージャーでこれらのディレクトリを表示したいのですが。ここで見つけたすべてを試して、内部ストレージと外部ストレージにコードから作成しました。フォルダーは作成されているようですが、電話のファイルマネージャーを参照したときに、アプリ名が含まれているフォルダーが見つかりませんでした。その中に、データベースフォルダーと画像フォルダーがあります。何が問題なのですか? Android studioフォルダーを追加するときにこれらのフォルダーを作成する必要がありますか?それともコードから作成する必要がありますか?
このタスクを完了するために必要なアクションを教えていただけますか? Android studio 3.1.3を使用しています。ヘルパーをありがとう!:)
「内部ストレージ」と「外部ストレージ」という用語は、Googleの意図が私たちの意図とは異なるため、最初は混乱するかもしれません私たちの日常的な言語の使用から期待して知ってください。「外部」は必ずしも「SDカード」を意味するわけではありません。 この男は、用語の混乱についてすばらしい記事を書いた
あなたの意図によれば、 External Storage のコンセプトで作業したいと思うでしょう。違いは Documentation で詳しく説明されていますが、ここで簡単に説明します。
最後に例を示しますが、最初に基本を教えます。
内部ストレージ
外部ストレージ
外部ストレージが必要であることがわかったので、開始する前に実行する必要があることがいくつかあります。
Manifest.xml
_ファイル内にPermissions (読み取り/書き込み)を要求します。_ <manifest ...>
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
_
各パーミッションはそれぞれ独立しています。つまり、たとえば、ファイルを書き込むのではなく、ファイルを読み取るだけの場合は、両方を持つ必要はありません。
指定されたメソッドでは、ルートディレクトリ内にテキストファイルを保存します。
この記事 へのクレジット
_public void writeFileExternalStorage() {
//Text of the Document
String textToWrite = "bla bla bla";
//Checking the availability state of the External Storage.
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)) {
//If it isn't mounted - we can't write into it.
return;
}
//Create a new file that points to the root directory, with the given name:
File file = new File(getExternalFilesDir(null), filenameExternal);
//This point and below is responsible for the write operation
FileOutputStream outputStream = null;
try {
file.createNewFile();
//second argument of FileOutputStream constructor indicates whether
//to append or create new file if one exists
outputStream = new FileOutputStream(file, true);
outputStream.write(textToWrite.getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
_
具体的にいくつかの質問にお答えしたいと思います。
Android studioフォルダーを追加するときにこれらのフォルダーを作成する必要がありますか?それともコードから作成する必要がありますか?
間違いなくAndroid Studio経由ではありません。これらはプロジェクトのフォルダであり、コードが含まれています。その方法は上記で説明しています。
アプリ名が含まれているフォルダーが見つかりませんでした。その中には、データベースフォルダーと画像フォルダーがあります...何がいけないのですか?
おそらく、ファイルを内部ストレージとして保存したか、前述のようにプロジェクトフォルダーとして保存しました。これらは表示されません(表示されるべきではありません)。
知っておくと便利なこと
ディレクトリには、パブリックとプライベートの2種類があります。
プライベート
getExternalFilesDir(...)
メソッドで取得例:WhatsApp
ディレクトリ(私の電話内)はルートレベルにあります。それを呼び出すと:getExternalFilesDir("WhatsApp/...")
公開(ダウンロード/映画/画像ライブラリ)
Environment.getExternalStoragePublicDirectory(...)
メソッドで取得例:Documents
フォルダーを取得すると、次のようになります:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)