正在查看: Jurassic World v1.83.4 应用的 HelperActivity.java JAVA 源代码文件
本页面展示 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;
}
}
}