diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d2f06caf..b620e61f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -203,6 +203,15 @@ + + + - \ No newline at end of file + diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java index 3a6e97fe..061c07b1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java @@ -38,7 +38,7 @@ public class SongShareDialog extends DialogFragment { public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { switch (i) { case 0: - startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song), null)); + startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, getContext()), null)); break; case 1: getActivity().startActivity( diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/menu/SongMenuHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/menu/SongMenuHelper.java index a1767662..a3cedbd2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/menu/SongMenuHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/menu/SongMenuHelper.java @@ -32,7 +32,7 @@ public class SongMenuHelper { MusicUtil.setRingtone(activity, song.id); return true; case R.id.action_share: - activity.startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song), null)); + activity.startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, activity), null)); return true; case R.id.action_delete_from_device: DeleteSongsDialog.create(song).show(activity.getSupportFragmentManager(), "DELETE_SONGS"); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 4f299565..61f3984a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -13,6 +13,7 @@ import android.provider.MediaStore; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.content.FileProvider; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; @@ -23,7 +24,6 @@ import com.kabouzeid.gramophone.loader.PlaylistLoader; import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Playlist; -import com.kabouzeid.gramophone.model.PlaylistSong; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics; @@ -55,10 +55,11 @@ public class MusicUtil { } @NonNull - public static Intent createShareSongFileIntent(@NonNull final Song song) { + public static Intent createShareSongFileIntent(@NonNull final Song song, Context context) { return new Intent() .setAction(Intent.ACTION_SEND) - .putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + song.data)) + .putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName(), new File(song.data))) + .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) .setType("audio/*"); } diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml new file mode 100644 index 00000000..74a5cde1 --- /dev/null +++ b/app/src/main/res/xml/provider_paths.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file