我正在尝试侦听Android Api 26+上外部SD卡上的文件夹更改,问题是我没有得到真实路径,仅得到内容URI。我几乎尝试了所有事情:
1-第三方库。
2- Environment.getExternalStorageDirectory();
3- System.getenv(“ SECONDARY_STORAGE”)
4- System.getenv(“ EXTERNAL_STORAGE”)
5- Environment.getExternalStoragePublicDirectory();
我无法访问外部SD卡,我需要一个真实的路径来添加FileObserver。关于如何收听SD卡上的文件夹或如何获取其路径的任何建议?
有几种方法可以从content://
或Content URI
获取真实路径>
用途:
private String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} catch (Exception e) {
Log.e(TAG, "getRealPathFromURI Exception : " + e.toString());
return "";
} finally {
if (cursor != null) {
cursor.close();
}
}
}
另请参见:Android: Getting a file URI from a content URI?
并在后台观察文件夹:How to monitor folder for file changes in background? - SO Question