Androidファイルシステム上に、アプリケーションでファイルを作成し、
MTP接続されたWindowsのエクスプローラで参照する。
ファイルの作成をしても、Windowsエクスプローラに表示されない。
adb shellやAndroid端末上のエクスプローラでは正常に表示される。
Android端末の再起動を行うと表示される。
ファイルを上書きした際もWindowsエクスプローラでは上書きされていない。
Androidファイルシステム上にファイルを作成・変更した場合、
手動でメディアスキャンを実行しファイル情報データベースの更新が必要。
ファイルを上書きした場合、メディアスキャンを実行しても
その変更が反映されないので対策が必要。
既存ファイルを削除して、一度メディアスキャンを行い、
メディアスキャン完了時にコールバックされるonScanCompletedListener()メソッドで
新規ファイルの作成を行い、再度メディアスキャンを実行する。
package mediascan.sample;
import java.io.File;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.OnScanCompletedListener;
public class Mediascan {
private String filePath = Environment.getExternalStorageDirectory().getPath() + "/sample.txt";
private String[] targetFiles = { filePath };
private String[] fileType = null;
public void run() {
File oldFile = null;
try {
//既存ファイルを取得
oldFile = new File(filePath);
oldFile.delete();
} catch (Exception exception) {
System.out.println(exception.getMessage());
return;
}
//既存ファイルの削除をメディアスキャンにより反映
MediaScannerConnection.scanFile(this, targetFiles, fileType, new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
//メディアスキャン完了時に呼び出されるコールバックメソッド
//新規ファイルの生成
- (省略)
//新規ファイルの生成をメディアスキャンにより反映
MediaScannerConnection.scanFile(this, targetFiles, fileType, new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
//メディアスキャン完了時に呼び出されるコールバックメソッド
//完了時の処理
- (省略)
}
});
}
});
}
}