diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java index c4f1675cf04..afe1b13d1a0 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java @@ -8,7 +8,6 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; -import android.os.Build; import android.text.TextUtils; import android.widget.Toast; @@ -164,42 +163,12 @@ public static boolean openIntentInApp(@NonNull final Context context, private static void openAppChooser(@NonNull final Context context, @NonNull final Intent intent, final boolean setTitleChooser) { - final Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); - chooserIntent.putExtra(Intent.EXTRA_INTENT, intent); - chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + String title = null; if (setTitleChooser) { - chooserIntent.putExtra(Intent.EXTRA_TITLE, context.getString(R.string.open_with)); + title = context.getString(R.string.open_with); } - // Migrate any clip data and flags from the original intent. - final int permFlags; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION - | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION); - } else { - permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); - } - if (permFlags != 0) { - ClipData targetClipData = intent.getClipData(); - if (targetClipData == null && intent.getData() != null) { - final ClipData.Item item = new ClipData.Item(intent.getData()); - final String[] mimeTypes; - if (intent.getType() != null) { - mimeTypes = new String[] {intent.getType()}; - } else { - mimeTypes = new String[] {}; - } - targetClipData = new ClipData(null, mimeTypes, item); - } - if (targetClipData != null) { - chooserIntent.setClipData(targetClipData); - chooserIntent.addFlags(permFlags); - } - } + final Intent chooserIntent = Intent.createChooser(intent, title); context.startActivity(chooserIntent); } diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 39bdefbe0c6..0b1479a2a3e 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -27,6 +27,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.core.app.NotificationCompat; +import androidx.core.app.ShareCompat; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; import androidx.core.view.ViewCompat; @@ -369,22 +370,11 @@ private void viewWithFileProvider(Mission mission) { private void shareFile(Mission mission) { if (checkInvalidFile(mission)) return; - final Intent shareIntent = new Intent(Intent.ACTION_SEND); - shareIntent.setType(resolveMimeType(mission)); - shareIntent.putExtra(Intent.EXTRA_STREAM, resolveShareableUri(mission)); - shareIntent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); - - final Intent intent = new Intent(Intent.ACTION_CHOOSER); - intent.putExtra(Intent.EXTRA_INTENT, shareIntent); - // unneeded to set a title to the chooser on Android P and higher because the system - // ignores this title on these versions - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O_MR1) { - intent.putExtra(Intent.EXTRA_TITLE, mContext.getString(R.string.share_dialog_title)); - } - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); - - mContext.startActivity(intent); + new ShareCompat.IntentBuilder(mContext) + .setType(resolveMimeType(mission)) + .setStream(resolveShareableUri(mission)) + .setChooserTitle(R.string.share_dialog_title) + .startChooser(); } /**