导航菜单

页面标题

页面副标题

Jurassic World v1.83.4 - HelperActivity.java 源代码

正在查看: Jurassic World v1.83.4 应用的 HelperActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.urbanairship.util;

import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.ResultReceiver;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.util.Consumer;
import com.urbanairship.Autopilot;
import com.urbanairship.Logger;
import com.urbanairship.UAirship;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

@Deprecated
public class HelperActivity extends AppCompatActivity {
    public static final String PERMISSIONS_EXTRA = "com.urbanairship.util.helperactivity.PERMISSIONS_EXTRA";
    public static final String RESULT_INTENT_EXTRA = "com.urbanairship.util.helperactivity.RESULT_INTENT_EXTRA";
    public static final String RESULT_RECEIVER_EXTRA = "com.urbanairship.util.helperactivity.RESULT_RECEIVER_EXTRA";
    public static final String START_ACTIVITY_INTENT_EXTRA = "com.urbanairship.util.START_ACTIVITY_INTENT_EXTRA";
    private List<Intent> intents = new ArrayList();

    public final void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Autopilot.automaticTakeOff(getApplication());
        if (!UAirship.isTakingOff() && !UAirship.isFlying()) {
            Logger.error("HelperActivity - unable to create activity, takeOff not called.", new Object[0]);
            finish();
        } else if (savedInstanceState == null) {
            addIntent(getIntent());
            processNextIntent();
        }
    }

    private void addIntent(Intent intent) {
        if (intent != null) {
            this.intents.add(intent);
        }
    }

    private void processNextIntent() {
        if (this.intents.isEmpty()) {
            finish();
            return;
        }
        Intent intent = this.intents.get(0);
        Intent intent2 = (Intent) intent.getParcelableExtra(START_ACTIVITY_INTENT_EXTRA);
        String[] stringArrayExtra = intent.getStringArrayExtra(PERMISSIONS_EXTRA);
        if (intent2 != null) {
            startActivityForResult(intent2, 0);
            return;
        }
        if (Build.VERSION.SDK_INT >= 23 && stringArrayExtra != null) {
            requestPermissions(stringArrayExtra, 0);
            return;
        }
        Logger.error("HelperActivity - Started without START_ACTIVITY_INTENT_EXTRA or PERMISSIONS_EXTRA extra.", new Object[0]);
        this.intents.remove(0);
        processNextIntent();
    }

    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        this.intents.add(intent);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (this.intents.isEmpty()) {
            finish();
            return;
        }
        ResultReceiver resultReceiver = (ResultReceiver) this.intents.remove(0).getParcelableExtra(RESULT_RECEIVER_EXTRA);
        if (resultReceiver != null) {
            Bundle bundle = new Bundle();
            bundle.putParcelable(RESULT_INTENT_EXTRA, data);
            resultReceiver.send(resultCode, bundle);
        }
        super.onActivityResult(requestCode, resultCode, data);
        processNextIntent();
    }

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (this.intents.isEmpty()) {
            finish();
            return;
        }
        ResultReceiver resultReceiver = (ResultReceiver) this.intents.remove(0).getParcelableExtra(RESULT_RECEIVER_EXTRA);
        if (resultReceiver != null) {
            Bundle bundle = new Bundle();
            bundle.putIntArray(RESULT_INTENT_EXTRA, grantResults);
            resultReceiver.send(-1, bundle);
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        processNextIntent();
    }

    private static void requestPermissions(Context context, String[] permissions, final Consumer<int[]> consumer) {
        Context applicationContext = context.getApplicationContext();
        int length = permissions.length;
        final int[] iArr = new int[length];
        boolean z = false;
        for (int i = 0; i < length; i++) {
            iArr[i] = ContextCompat.checkSelfPermission(applicationContext, permissions[i]);
            if (iArr[i] == -1) {
                z = true;
            }
        }
        Handler handler = new Handler(Looper.getMainLooper());
        if (z && Build.VERSION.SDK_INT >= 23) {
            applicationContext.startActivity(new Intent(applicationContext, (Class<?>) HelperActivity.class).addFlags(268435456).setPackage(UAirship.getPackageName()).putExtra(PERMISSIONS_EXTRA, permissions).putExtra(RESULT_RECEIVER_EXTRA, new ResultReceiver(handler) {
                @Override
                public void onReceiveResult(int resultCode, Bundle resultData) {
                    int[] intArray = resultData.getIntArray(HelperActivity.RESULT_INTENT_EXTRA);
                    if (intArray == null) {
                        intArray = new int[0];
                    }
                    Consumer consumer2 = consumer;
                    if (consumer2 != null) {
                        consumer2.accept(intArray);
                    }
                }
            }));
        } else if (consumer != null) {
            handler.post(new Runnable() {
                @Override
                public final void run() {
                    consumer.accept(iArr);
                }
            });
        }
    }

    public static int[] requestPermissions(Context context, String... permissions) {
        final int[] iArr = new int[permissions.length];
        synchronized (iArr) {
            requestPermissions(context, permissions, new Consumer() {
                public final void accept(Object obj) {
                    HelperActivity.lambda$requestPermissions$1(iArr, (int[]) obj);
                }
            });
            try {
                iArr.wait();
            } catch (InterruptedException e) {
                Logger.error(e, "Thread interrupted when waiting for result from activity.", new Object[0]);
                Thread.currentThread().interrupt();
            }
        }
        return iArr;
    }

    static void lambda$requestPermissions$1(int[] iArr, int[] iArr2) {
        if (iArr2 != null && iArr2.length == iArr.length) {
            System.arraycopy(iArr2, 0, iArr, 0, iArr.length);
        }
        synchronized (iArr) {
            iArr.notify();
        }
    }

    public static ActivityResult startActivityForResult(Context context, Intent intent) {
        Context applicationContext = context.getApplicationContext();
        final ActivityResult activityResult = new ActivityResult();
        Intent putExtra = new Intent(applicationContext, (Class<?>) HelperActivity.class).addFlags(268435456).setPackage(UAirship.getPackageName()).putExtra(START_ACTIVITY_INTENT_EXTRA, intent).putExtra(RESULT_RECEIVER_EXTRA, new ResultReceiver(new Handler(Looper.getMainLooper())) {
            @Override
            public void onReceiveResult(int resultCode, Bundle resultData) {
                activityResult.setResult(resultCode, (Intent) resultData.getParcelable(HelperActivity.RESULT_INTENT_EXTRA));
                synchronized (activityResult) {
                    activityResult.notify();
                }
            }
        });
        synchronized (activityResult) {
            applicationContext.startActivity(putExtra);
            try {
                activityResult.wait();
            } catch (InterruptedException e) {
                Logger.error(e, "Thread interrupted when waiting for result from activity.", new Object[0]);
                Thread.currentThread().interrupt();
                return new ActivityResult();
            }
        }
        return activityResult;
    }

    protected void onDestroy() {
        super.onDestroy();
        Iterator<Intent> it = this.intents.iterator();
        while (it.hasNext()) {
            ResultReceiver resultReceiver = (ResultReceiver) it.next().getParcelableExtra(RESULT_RECEIVER_EXTRA);
            if (resultReceiver != null) {
                resultReceiver.send(0, new Bundle());
            }
        }
        this.intents.clear();
    }

    public static class ActivityResult {
        private Intent intent;
        private int resultCode = 0;

        public Intent getIntent() {
            return this.intent;
        }

        public int getResultCode() {
            return this.resultCode;
        }

        public void setResult(int resultCode, Intent intent) {
            this.resultCode = resultCode;
            this.intent = intent;
        }
    }
}