35

Android のサブフォルダーに写真を保存しようとしています。これが私のコードの一部です:

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

( DCIM の代わりに、Pictures フォルダーの代わりにgetExternalStorageDirectory試しました。)getExternalStoragePublicDirectory

デバイスが USB 経由で接続されている場合、追加したサブフォルダー (その内容を含む) が Windows エクスプローラーに表示されません。ただし、Android File Manager には表示されます。

ACTION_MEDIA_MOUNTED新しいディレクトリの親に意図をブロードキャストしようとしました。うまくいきませんでした。

Windows でファイルを追加すると、Android に表示されます。ファイル マネージャーを使用して Android にファイルを追加すると、Windows に表示されます。プログラムでファイルを追加すると、Android ファイル マネージャーには表示されますが、Windows エクスプローラーには表示されません。また、Windows から取得する必要があり、最終ユーザーがフォルダーを手動で作成する必要はありません。

私は何を間違っていますか?

4

8 に答える 8

62

私は同じ問題に直面し、Android デバイスまたは PC のいずれかを再起動することは、ユーザーにとって実用的な解決策ではありません。:)

この問題は、MTPプロトコルの使用によるものです (私はこのプロトコルが嫌いです)。MediaScannerConnection利用可能なファイルの再スキャンを開始する必要があり、クラスを使用してこれを行うことができます。

// Snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

// Initiate a media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
于 2013-11-12T16:06:53.563 に答える
5

バスキの答えで使用されている方法が常にうまくいくとは限りません。さて、ここに完全な解決策があります。

// Snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

// Fix
path.setExecutable(true);
path.setReadable(true);
path.setWritable(true);

// Initiate media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
于 2015-06-07T18:46:03.277 に答える
3

私のために働いた唯一のことはこれでした:

Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(path);
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent);

https://stackoverflow.com/a/12821924/1964666へのクレジット

于 2016-09-10T13:38:41.347 に答える
0

PC からカード リーダーを介して直接 SD カードにフォルダを追加すると、電話機に接続したときに Windows エクスプローラに表示されません。

解決策は、Android ファイル マネージャー プログラムを使用して同じフォルダーをコピーまたは移動することです。PC に接続すると、SD カードのインデックスにリストされます。

于 2013-06-11T07:11:34.877 に答える
-1

電話の設定を切り替えることで、この問題を解決しました。

  1. ディレクトリの作成やファイルの保存が完了したら、(MTP)モードからUSB(SDカード)モードに切り替えて、PCにSDカードがマウントされるのを待つと、ディレクトリとファイルが表示されます。

  2. 最後のファイルがまだ表示される (MTP) モードに戻ります。

  3. ファイルを再保存する場合は、再度 USB に変更する必要があります。

于 2016-08-05T09:45:32.263 に答える