导航菜单

页面标题

页面副标题

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

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

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


package org.thoughtcrime.securesms.qr;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import java.io.FileNotFoundException;
import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.contacts.NewContactActivity;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;

public class QrActivity extends BaseActionBarActivity implements View.OnClickListener {
    static final boolean $assertionsDisabled = false;
    private static final int REQUEST_CODE_IMAGE = 46243;
    private static final int TAB_SCAN = 1;
    private static final int TAB_SHOW = 0;
    private static final String TAG = "QrActivity";
    private QrShowFragment qrShowFragment;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onPreCreate() {
        this.dynamicTheme = new DynamicNoActionBarTheme();
        super.onPreCreate();
    }

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_qr);
        this.qrShowFragment = new QrShowFragment(this);
        this.tabLayout = ViewUtil.findById((Activity) this, R.id.tab_layout);
        this.viewPager = ViewUtil.findById((Activity) this, R.id.pager);
        final ProfilePagerAdapter profilePagerAdapter = new ProfilePagerAdapter(this, getSupportFragmentManager());
        this.viewPager.setAdapter(profilePagerAdapter);
        setSupportActionBar(ViewUtil.findById((Activity) this, R.id.toolbar));
        getSupportActionBar().setTitle(R.string.menu_new_contact);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        this.viewPager.setCurrentItem(0);
        this.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageScrollStateChanged(int i) {
            }

            public void onPageScrolled(int i, float f, int i2) {
            }

            public void onPageSelected(int i) {
                QrActivity.this.invalidateOptionsMenu();
                QrActivity qrActivity = QrActivity.this;
                qrActivity.checkPermissions(i, profilePagerAdapter, qrActivity.viewPager);
            }
        });
        this.tabLayout.setupWithViewPager(this.viewPager);
    }

    public void checkPermissions(int i, final ProfilePagerAdapter profilePagerAdapter, final ViewPager viewPager) {
        if (i == 1) {
            Permissions.with((Activity) this).request("android.permission.CAMERA").ifNecessary().withPermanentDenialDialog(getString(R.string.perm_explain_access_to_camera_denied)).onAllGranted(new Runnable() {
                @Override
                public final void run() {
                    QrActivity.this.m1586x4c7eff65(profilePagerAdapter);
                }
            }).onAnyDenied(new Runnable() {
                @Override
                public final void run() {
                    viewPager.setCurrentItem(0);
                }
            }).execute();
        }
    }

    void m1586x4c7eff65(ProfilePagerAdapter profilePagerAdapter) {
        ((QrScanFragment) profilePagerAdapter.getItem(1)).handleQrScanWithPermissions(this);
    }

    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear();
        getMenuInflater().inflate(R.menu.qr_show, menu);
        menu.findItem(R.id.new_classic_contact).setVisible(!DcHelper.getContext(this).isChatmail());
        Util.redMenuItem(menu, R.id.withdraw);
        if (this.tabLayout.getSelectedTabPosition() == 1) {
            menu.findItem(R.id.withdraw).setVisible(false);
        }
        return super.onPrepareOptionsMenu(menu);
    }

    public boolean onOptionsItemSelected(MenuItem menuItem) {
        super.onOptionsItemSelected(menuItem);
        int itemId = menuItem.getItemId();
        if (itemId == 16908332) {
            finish();
            return true;
        }
        if (itemId == R.id.new_classic_contact) {
            startActivity(new Intent((Context) this, (Class<?>) NewContactActivity.class));
            return false;
        }
        if (itemId == R.id.withdraw) {
            this.qrShowFragment.withdrawQr();
            return false;
        }
        if (itemId == R.id.load_from_image) {
            AttachmentManager.selectImage(this, REQUEST_CODE_IMAGE);
            return false;
        }
        if (itemId != R.id.paste) {
            return false;
        }
        new QrCodeHandler(this).handleQrData(Util.getTextFromClipboard(this));
        return false;
    }

    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
        Permissions.onRequestPermissionsResult((Activity) this, i, strArr, iArr);
        if (strArr.length > 0 && "android.permission.CAMERA".equals(strArr[0]) && iArr[0] == -1) {
            this.viewPager.setCurrentItem(0);
        }
    }

    public void onActivityResult(int i, int i2, Intent intent) {
        super.onActivityResult(i, i2, intent);
        if (i2 == -1 && i == REQUEST_CODE_IMAGE) {
            Uri data = intent != null ? intent.getData() : null;
            if (data != null) {
                try {
                    Bitmap decodeStream = BitmapFactory.decodeStream(getContentResolver().openInputStream(data));
                    if (decodeStream == null) {
                        Log.e(TAG, "uri is not a bitmap: " + data.toString());
                        return;
                    }
                    int width = decodeStream.getWidth();
                    int height = decodeStream.getHeight();
                    int[] iArr = new int[width * height];
                    decodeStream.getPixels(iArr, 0, width, 0, 0, width, height);
                    decodeStream.recycle();
                    try {
                        new QrCodeHandler(this).handleQrData(new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(new RGBLuminanceSource(width, height, iArr)))).getText());
                    } catch (NotFoundException e) {
                        Log.e(TAG, "decode exception", e);
                        Toast.makeText((Context) this, (CharSequence) getString(R.string.qrscan_failed), 1).show();
                    }
                } catch (FileNotFoundException e2) {
                    Log.e(TAG, "can not open file: " + data.toString(), e2);
                }
            }
        }
    }

    @Override
    public void onClick(View view) {
        this.viewPager.setCurrentItem(1);
    }

    class ProfilePagerAdapter extends FragmentStatePagerAdapter {
        private final QrActivity activity;

        public int getCount() {
            return 2;
        }

        ProfilePagerAdapter(QrActivity qrActivity, FragmentManager fragmentManager) {
            super(fragmentManager, 1);
            this.activity = qrActivity;
        }

        public Fragment getItem(int i) {
            if (i == 0) {
                return this.activity.qrShowFragment;
            }
            return new QrScanFragment();
        }

        public CharSequence getPageTitle(int i) {
            if (i == 0) {
                return QrActivity.this.getString(R.string.qrshow_title);
            }
            return QrActivity.this.getString(R.string.qrscan_title);
        }
    }
}