正在查看: Delta Chat v1.58.3 应用的 QrActivity.java JAVA 源代码文件
本页面展示 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);
}
}
}