导航菜单

页面标题

页面副标题

Delta Chat v1.58.3 - WebxdcStoreActivity.java 源代码

正在查看: Delta Chat v1.58.3 应用的 WebxdcStoreActivity.java JAVA 源代码文件

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


package org.thoughtcrime.securesms;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.rpc.HttpResponse;
import com.b44t.messenger.rpc.Rpc;
import com.b44t.messenger.rpc.RpcException;
import java.io.ByteArrayInputStream;
import java.util.HashMap;
import org.thoughtcrime.securesms.WebxdcStoreActivity;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;

public class WebxdcStoreActivity extends PassphraseRequiredActionBarActivity {
    private static final String TAG = "WebxdcStoreActivity";
    private DcContext dcContext;
    private Rpc rpc;

    @Override
    protected void onCreate(Bundle bundle, boolean z) {
        setContentView(R.layout.web_view_activity);
        this.rpc = DcHelper.getRpc(this);
        this.dcContext = DcHelper.getContext(this);
        WebView webView = (WebView) findViewById(R.id.webview);
        ActionBar supportActionBar = getSupportActionBar();
        if (supportActionBar != null) {
            supportActionBar.setDisplayHomeAsUpEnabled(true);
            supportActionBar.setTitle(R.string.webxdc_apps);
        }
        webView.setWebViewClient(new AnonymousClass1());
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setAllowFileAccess(false);
        settings.setAllowContentAccess(false);
        settings.setGeolocationEnabled(false);
        settings.setAllowFileAccessFromFileURLs(false);
        settings.setAllowUniversalAccessFromFileURLs(false);
        settings.setDatabaseEnabled(true);
        settings.setDomStorageEnabled(true);
        webView.setNetworkAvailable(true);
        webView.loadUrl(Prefs.getWebxdcStoreUrl(this));
    }

    class AnonymousClass1 extends WebViewClient {
        AnonymousClass1() {
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, final String str) {
            if ("xdc".equals(MediaUtil.getFileExtensionFromUrl(Uri.parse(str).getPath()))) {
                Util.runOnAnyBackgroundThread(new Runnable() {
                    @Override
                    public final void run() {
                        WebxdcStoreActivity.AnonymousClass1.this.m1319xc0b6f352(str);
                    }
                });
                return true;
            }
            IntentUtils.showInBrowser(WebxdcStoreActivity.this, str);
            return true;
        }

        void m1319xc0b6f352(String str) {
            try {
                Uri create = PersistentBlobProvider.getInstance().create(WebxdcStoreActivity.this, WebxdcStoreActivity.this.rpc.getHttpResponse(WebxdcStoreActivity.this.dcContext.getAccountId(), str).getBlob(), MediaUtil.OCTET, "app.xdc");
                Intent intent = new Intent();
                intent.setData(create);
                WebxdcStoreActivity.this.setResult(-1, intent);
                WebxdcStoreActivity.this.finish();
            } catch (RpcException e) {
                e.printStackTrace();
                Util.runOnMain(new Runnable() {
                    @Override
                    public final void run() {
                        WebxdcStoreActivity.AnonymousClass1.this.m1318xcf0d4d33(e);
                    }
                });
            }
        }

        void m1318xcf0d4d33(RpcException rpcException) {
            Toast.makeText((Context) WebxdcStoreActivity.this, (CharSequence) ("Error: " + rpcException.getMessage()), 1).show();
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) {
            return shouldOverrideUrlLoading(webView, webResourceRequest.getUrl().toString());
        }

        @Override
        public WebResourceResponse shouldInterceptRequest(WebView webView, WebResourceRequest webResourceRequest) {
            return WebxdcStoreActivity.this.interceptRequest(webResourceRequest.getUrl().toString());
        }
    }

    public WebResourceResponse interceptRequest(String str) {
        WebResourceResponse webResourceResponse;
        try {
        } catch (Exception e) {
            e.printStackTrace();
            webResourceResponse = new WebResourceResponse("text/plain", "UTF-8", new ByteArrayInputStream(("Could not load apps. Are you online?\n\n" + e.getMessage()).getBytes()));
        }
        if (str == null) {
            throw new Exception("no url specified");
        }
        HttpResponse httpResponse = this.rpc.getHttpResponse(this.dcContext.getAccountId(), str);
        String mimetype = httpResponse.getMimetype();
        if (mimetype == null) {
            mimetype = MediaUtil.OCTET;
        }
        webResourceResponse = new WebResourceResponse(mimetype, httpResponse.getEncoding(), new ByteArrayInputStream(httpResponse.getBlob()));
        HashMap hashMap = new HashMap();
        hashMap.put("access-control-allow-origin", "*");
        webResourceResponse.setResponseHeaders(hashMap);
        return webResourceResponse;
    }

    public boolean onOptionsItemSelected(MenuItem menuItem) {
        super.onOptionsItemSelected(menuItem);
        if (menuItem.getItemId() != 16908332) {
            return false;
        }
        finish();
        return true;
    }
}