导航菜单

页面标题

页面副标题

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

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

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


package com.urbanairship.actions;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import com.urbanairship.AirshipExecutors;
import com.urbanairship.Logger;
import com.urbanairship.R;
import com.urbanairship.UAirship;
import com.urbanairship.activity.ThemedActivity;
import com.urbanairship.http.Request;
import com.urbanairship.http.RequestException;
import com.urbanairship.http.Response;
import com.urbanairship.http.ResponseParser;
import com.urbanairship.util.UAHttpStatusUtil;
import java.util.List;
import java.util.Map;

public class WalletLoadingActivity extends ThemedActivity {
    private final MutableLiveData<Result> liveData = new MutableLiveData<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ua_activity_wallet_loading);
        Uri data = getIntent().getData();
        if (data == null) {
            Logger.warn("User URI null, unable to process link.", new Object[0]);
            finish();
        } else {
            this.liveData.observe(this, new Observer<Result>() {
                public void onChanged(Result result) {
                    if (result.exception != null || result.uri == null) {
                        WalletLoadingActivity.this.finish();
                    } else {
                        WalletLoadingActivity.this.startActivity(new Intent("android.intent.action.VIEW", result.uri));
                    }
                }
            });
            resolveWalletUrl(data);
        }
    }

    private void resolveWalletUrl(final Uri url) {
        AirshipExecutors.threadPoolExecutor().submit(new Runnable() {
            @Override
            public void run() {
                try {
                    Logger.debug("Runner starting", new Object[0]);
                    Response execute = new Request().setOperation("GET", url).setInstanceFollowRedirects(false).setAirshipUserAgent(UAirship.shared().getRuntimeConfig()).execute(new ResponseParser<String>() {
                        @Override
                        public String parseResponse(int status, Map headers, String responseBody) throws Exception {
                            return parseResponse2(status, (Map<String, List<String>>) headers, responseBody);
                        }

                        @Override
                        public String parseResponse2(int status, Map<String, List<String>> headers, String responseBody) {
                            if (!UAHttpStatusUtil.inRedirectionRange(status) || headers == null || headers.get("Location") == null) {
                                return null;
                            }
                            return headers.get("Location").get(0);
                        }
                    });
                    if (execute.getResult() != null) {
                        WalletLoadingActivity.this.liveData.postValue(new Result(Uri.parse(execute.getResponseHeader("Location")), null));
                    } else {
                        Logger.warn("No result found for Wallet URL, finishing action.", new Object[0]);
                        WalletLoadingActivity.this.liveData.postValue(new Result(null, null));
                    }
                } catch (RequestException e) {
                    WalletLoadingActivity.this.liveData.postValue(new Result(null, e));
                }
            }
        });
    }

    private static class Result {
        Exception exception;
        Uri uri;

        public Result(Uri uri, Exception exception) {
            this.uri = uri;
            this.exception = exception;
        }
    }
}