提出的方法不起作用的原因是因为您使用ContentProvider URI而不是实际的文件路径.要获取实际的文件路径,您必须使用游标来获取文件.
假设String contentUri等于内容URI,如content:// media / external / audio / media / 192
ContentResolver cr = getContentResolver();
String[] projection = {MediaStore.MediaColumns.DATA}
Cursor cur = cr.query(Uri.parse(contentUri), projection, null, null, null);
if (cur != null) {
if (cur.moveToFirst()) {
String filePath = cur.getString(0);
if (new File(filePath).exists()) {
// do something if it exists
} else {
// File was not found
}
} else {
// Uri was ok but no entry found.
}
cur.close();
} else {
// content Uri was invalid or some other error occurred
}
我没有使用这种方法与声音文件或内部存储,但它应该工作.该查询应该将单个行直接返回到您的文件.