discord-jadx/app/src/main/java/androidx/activity/result/contract/ActivityResultContracts.java

389 lines
16 KiB
Java

package androidx.activity.result.contract;
import android.annotation.TargetApi;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.IntentSenderRequest;
import androidx.activity.result.contract.ActivityResultContract;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.collection.ArrayMap;
import androidx.core.content.ContextCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
public final class ActivityResultContracts {
@TargetApi(19)
public static class CreateDocument extends ActivityResultContract<String, Uri> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull String str) {
return new Intent("android.intent.action.CREATE_DOCUMENT").setType("*/*").putExtra("android.intent.extra.TITLE", str);
}
@Nullable
public final ActivityResultContract.SynchronousResult<Uri> getSynchronousResult(@NonNull Context context, @NonNull String str) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Uri parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return intent.getData();
}
}
public static class GetContent extends ActivityResultContract<String, Uri> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull String str) {
return new Intent("android.intent.action.GET_CONTENT").addCategory("android.intent.category.OPENABLE").setType(str);
}
@Nullable
public final ActivityResultContract.SynchronousResult<Uri> getSynchronousResult(@NonNull Context context, @NonNull String str) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Uri parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return intent.getData();
}
}
@TargetApi(18)
public static class GetMultipleContents extends ActivityResultContract<String, List<Uri>> {
@NonNull
public static List<Uri> getClipDataUris(@NonNull Intent intent) {
LinkedHashSet linkedHashSet = new LinkedHashSet();
if (intent.getData() != null) {
linkedHashSet.add(intent.getData());
}
ClipData clipData = intent.getClipData();
if (clipData == null && linkedHashSet.isEmpty()) {
return Collections.emptyList();
}
if (clipData != null) {
for (int i = 0; i < clipData.getItemCount(); i++) {
Uri uri = clipData.getItemAt(i).getUri();
if (uri != null) {
linkedHashSet.add(uri);
}
}
}
return new ArrayList(linkedHashSet);
}
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull String str) {
return new Intent("android.intent.action.GET_CONTENT").addCategory("android.intent.category.OPENABLE").setType(str).putExtra("android.intent.extra.ALLOW_MULTIPLE", true);
}
@Nullable
public final ActivityResultContract.SynchronousResult<List<Uri>> getSynchronousResult(@NonNull Context context, @NonNull String str) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public final List<Uri> parseResult(int i, @Nullable Intent intent) {
return (intent == null || i != -1) ? Collections.emptyList() : getClipDataUris(intent);
}
}
@TargetApi(19)
public static class OpenDocument extends ActivityResultContract<String[], Uri> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull String[] strArr) {
return new Intent("android.intent.action.OPEN_DOCUMENT").putExtra("android.intent.extra.MIME_TYPES", strArr).setType("*/*");
}
@Nullable
public final ActivityResultContract.SynchronousResult<Uri> getSynchronousResult(@NonNull Context context, @NonNull String[] strArr) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Uri parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return intent.getData();
}
}
@TargetApi(21)
public static class OpenDocumentTree extends ActivityResultContract<Uri, Uri> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @Nullable Uri uri) {
Intent intent = new Intent("android.intent.action.OPEN_DOCUMENT_TREE");
if (Build.VERSION.SDK_INT >= 26 && uri != null) {
intent.putExtra("android.provider.extra.INITIAL_URI", uri);
}
return intent;
}
@Nullable
public final ActivityResultContract.SynchronousResult<Uri> getSynchronousResult(@NonNull Context context, @Nullable Uri uri) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Uri parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return intent.getData();
}
}
@TargetApi(19)
public static class OpenMultipleDocuments extends ActivityResultContract<String[], List<Uri>> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull String[] strArr) {
return new Intent("android.intent.action.OPEN_DOCUMENT").putExtra("android.intent.extra.MIME_TYPES", strArr).putExtra("android.intent.extra.ALLOW_MULTIPLE", true).setType("*/*");
}
@Nullable
public final ActivityResultContract.SynchronousResult<List<Uri>> getSynchronousResult(@NonNull Context context, @NonNull String[] strArr) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public final List<Uri> parseResult(int i, @Nullable Intent intent) {
return (i != -1 || intent == null) ? Collections.emptyList() : GetMultipleContents.getClipDataUris(intent);
}
}
public static final class PickContact extends ActivityResultContract<Void, Uri> {
@NonNull
public Intent createIntent(@NonNull Context context, @Nullable Void r2) {
return new Intent("android.intent.action.PICK").setType("vnd.android.cursor.dir/contact");
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public Uri parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return intent.getData();
}
}
public static final class RequestMultiplePermissions extends ActivityResultContract<String[], Map<String, Boolean>> {
public static final String ACTION_REQUEST_PERMISSIONS = "androidx.activity.result.contract.action.REQUEST_PERMISSIONS";
public static final String EXTRA_PERMISSIONS = "androidx.activity.result.contract.extra.PERMISSIONS";
public static final String EXTRA_PERMISSION_GRANT_RESULTS = "androidx.activity.result.contract.extra.PERMISSION_GRANT_RESULTS";
@NonNull
public static Intent createIntent(@NonNull String[] strArr) {
return new Intent("androidx.activity.result.contract.action.REQUEST_PERMISSIONS").putExtra("androidx.activity.result.contract.extra.PERMISSIONS", strArr);
}
@NonNull
public Intent createIntent(@NonNull Context context, @NonNull String[] strArr) {
return createIntent(strArr);
}
@Nullable
public ActivityResultContract.SynchronousResult<Map<String, Boolean>> getSynchronousResult(@NonNull Context context, @Nullable String[] strArr) {
if (strArr == null || strArr.length == 0) {
return new ActivityResultContract.SynchronousResult<>(Collections.emptyMap());
}
ArrayMap arrayMap = new ArrayMap();
boolean z2 = true;
for (String str : strArr) {
boolean z3 = ContextCompat.checkSelfPermission(context, str) == 0;
arrayMap.put(str, Boolean.valueOf(z3));
if (!z3) {
z2 = false;
}
}
if (z2) {
return new ActivityResultContract.SynchronousResult<>(arrayMap);
}
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public Map<String, Boolean> parseResult(int i, @Nullable Intent intent) {
if (i != -1) {
return Collections.emptyMap();
}
if (intent == null) {
return Collections.emptyMap();
}
String[] stringArrayExtra = intent.getStringArrayExtra("androidx.activity.result.contract.extra.PERMISSIONS");
int[] intArrayExtra = intent.getIntArrayExtra("androidx.activity.result.contract.extra.PERMISSION_GRANT_RESULTS");
if (intArrayExtra == null || stringArrayExtra == null) {
return Collections.emptyMap();
}
HashMap hashMap = new HashMap();
int length = stringArrayExtra.length;
for (int i2 = 0; i2 < length; i2++) {
hashMap.put(stringArrayExtra[i2], Boolean.valueOf(intArrayExtra[i2] == 0));
}
return hashMap;
}
}
public static final class RequestPermission extends ActivityResultContract<String, Boolean> {
@NonNull
public Intent createIntent(@NonNull Context context, @NonNull String str) {
return RequestMultiplePermissions.createIntent(new String[]{str});
}
@Nullable
public ActivityResultContract.SynchronousResult<Boolean> getSynchronousResult(@NonNull Context context, @Nullable String str) {
if (str == null) {
return new ActivityResultContract.SynchronousResult<>(Boolean.FALSE);
}
if (ContextCompat.checkSelfPermission(context, str) == 0) {
return new ActivityResultContract.SynchronousResult<>(Boolean.TRUE);
}
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public Boolean parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return Boolean.FALSE;
}
int[] intArrayExtra = intent.getIntArrayExtra("androidx.activity.result.contract.extra.PERMISSION_GRANT_RESULTS");
if (intArrayExtra == null || intArrayExtra.length == 0) {
return Boolean.FALSE;
}
boolean z2 = false;
if (intArrayExtra[0] == 0) {
z2 = true;
}
return Boolean.valueOf(z2);
}
}
public static final class StartActivityForResult extends ActivityResultContract<Intent, ActivityResult> {
public static final String EXTRA_ACTIVITY_OPTIONS_BUNDLE = "androidx.activity.result.contract.extra.ACTIVITY_OPTIONS_BUNDLE";
@NonNull
public Intent createIntent(@NonNull Context context, @NonNull Intent intent) {
return intent;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public ActivityResult parseResult(int i, @Nullable Intent intent) {
return new ActivityResult(i, intent);
}
}
public static final class StartIntentSenderForResult extends ActivityResultContract<IntentSenderRequest, ActivityResult> {
public static final String ACTION_INTENT_SENDER_REQUEST = "androidx.activity.result.contract.action.INTENT_SENDER_REQUEST";
public static final String EXTRA_INTENT_SENDER_REQUEST = "androidx.activity.result.contract.extra.INTENT_SENDER_REQUEST";
public static final String EXTRA_SEND_INTENT_EXCEPTION = "androidx.activity.result.contract.extra.SEND_INTENT_EXCEPTION";
@NonNull
public Intent createIntent(@NonNull Context context, @NonNull IntentSenderRequest intentSenderRequest) {
return new Intent("androidx.activity.result.contract.action.INTENT_SENDER_REQUEST").putExtra("androidx.activity.result.contract.extra.INTENT_SENDER_REQUEST", intentSenderRequest);
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public ActivityResult parseResult(int i, @Nullable Intent intent) {
return new ActivityResult(i, intent);
}
}
public static class TakePicture extends ActivityResultContract<Uri, Boolean> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull Uri uri) {
return new Intent("android.media.action.IMAGE_CAPTURE").putExtra("output", uri);
}
@Nullable
public final ActivityResultContract.SynchronousResult<Boolean> getSynchronousResult(@NonNull Context context, @NonNull Uri uri) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@NonNull
public final Boolean parseResult(int i, @Nullable Intent intent) {
return Boolean.valueOf(i == -1);
}
}
public static class TakePicturePreview extends ActivityResultContract<Void, Bitmap> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @Nullable Void r2) {
return new Intent("android.media.action.IMAGE_CAPTURE");
}
@Nullable
public final ActivityResultContract.SynchronousResult<Bitmap> getSynchronousResult(@NonNull Context context, @Nullable Void r2) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Bitmap parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return (Bitmap) intent.getParcelableExtra("data");
}
}
public static class TakeVideo extends ActivityResultContract<Uri, Bitmap> {
@NonNull
@CallSuper
public Intent createIntent(@NonNull Context context, @NonNull Uri uri) {
return new Intent("android.media.action.VIDEO_CAPTURE").putExtra("output", uri);
}
@Nullable
public final ActivityResultContract.SynchronousResult<Bitmap> getSynchronousResult(@NonNull Context context, @NonNull Uri uri) {
return null;
}
@Override // androidx.activity.result.contract.ActivityResultContract
@Nullable
public final Bitmap parseResult(int i, @Nullable Intent intent) {
if (intent == null || i != -1) {
return null;
}
return (Bitmap) intent.getParcelableExtra("data");
}
}
private ActivityResultContracts() {
}
}