Merge pull request #320 from svenoaks/master

Try to get file path from DATA column of Uri
This commit is contained in:
Karim Abou Zeid 2017-10-21 12:49:32 +02:00 committed by GitHub
commit 3c685a9a1a

View file

@ -8,6 +8,7 @@ import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
@ -16,6 +17,7 @@ import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.Toast;
import com.kabouzeid.gramophone.R;
@ -413,6 +415,11 @@ public class MusicPlayerRemote {
if (uri.getAuthority() != null && uri.getAuthority().equals("com.android.externalstorage.documents")) {
songFile = new File(Environment.getExternalStorageDirectory(), uri.getPath().split(":", 2)[1]);
}
if (songFile == null) {
String path = getFilePathFromUri(musicService, uri);
if (path != null)
songFile = new File(path);
}
if (songFile == null && uri.getPath() != null) {
songFile = new File(uri.getPath());
}
@ -431,6 +438,30 @@ public class MusicPlayerRemote {
}
}
}
@Nullable
private static String getFilePathFromUri(Context context, Uri uri)
{
Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column
};
try {
cursor = context.getContentResolver().query(uri, projection, null, null,
null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private static String getSongIdFromMediaProvider(Uri uri) {