正在查看: Delta Chat v1.58.3 应用的 WelcomeActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Delta Chat v1.58.3 应用的 WelcomeActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.thoughtcrime.securesms;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.util.Linkify;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.qr.BackupTransferActivity;
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
import org.thoughtcrime.securesms.service.GenericForegroundService;
import org.thoughtcrime.securesms.service.NotificationController;
import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.StreamUtil;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
public class WelcomeActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
public static final String BACKUP_QR_EXTRA = "backup_qr_extra";
public static final String DC_REQUEST_ACCOUNT_DATA = "chat.delta.DC_REQUEST_ACCOUNT_DATA";
public static final int PICK_BACKUP = 20574;
private static final String TAG = "WelcomeActivity";
public static final String TMP_BACKUP_FILE = "tmp-backup-file";
DcContext dcContext;
private boolean imexUserAborted;
private NotificationController notificationController;
private ProgressDialog progressDialog = null;
@Override
public boolean runOnMain() {
return DcEventCenter.DcEventDelegate.CC.$default$runOnMain(this);
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.welcome_activity);
Button button = (Button) findViewById(R.id.signup_button);
Button button2 = (Button) findViewById(R.id.signin_button);
View inflate = View.inflate(this, R.layout.login_options_view, null);
final AlertDialog create = new AlertDialog.Builder(this).setView(inflate).setTitle(R.string.onboarding_alternative_logins).setNegativeButton(R.string.cancel, (DialogInterface.OnClickListener) null).create();
inflate.findViewById(R.id.add_as_second_device_button).setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
WelcomeActivity.this.m1321lambda$onCreate$0$orgthoughtcrimesecuresmsWelcomeActivity(create, view);
}
});
inflate.findViewById(R.id.backup_button).setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
WelcomeActivity.this.m1322lambda$onCreate$1$orgthoughtcrimesecuresmsWelcomeActivity(create, view);
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
WelcomeActivity.this.m1323lambda$onCreate$2$orgthoughtcrimesecuresmsWelcomeActivity(view);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
create.show();
}
});
registerForEvents();
initializeActionBar();
if (DcHelper.hasAnyConfiguredContext(this)) {
return;
}
Intent intent = new Intent();
intent.setPackage("chat.delta.androidyggmail");
intent.setAction(DC_REQUEST_ACCOUNT_DATA);
sendBroadcast(intent);
}
void m1321lambda$onCreate$0$orgthoughtcrimesecuresmsWelcomeActivity(AlertDialog alertDialog, View view) {
startAddAsSecondDeviceActivity();
alertDialog.dismiss();
}
void m1322lambda$onCreate$1$orgthoughtcrimesecuresmsWelcomeActivity(AlertDialog alertDialog, View view) {
startImportBackup();
alertDialog.dismiss();
}
void m1323lambda$onCreate$2$orgthoughtcrimesecuresmsWelcomeActivity(View view) {
startInstantOnboardingActivity();
}
protected void initializeActionBar() {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar == null) {
throw new AssertionError();
}
boolean canRollbackAccountCreation = AccountManager.getInstance().canRollbackAccountCreation(this);
supportActionBar.setDisplayHomeAsUpEnabled(canRollbackAccountCreation);
getSupportActionBar().setTitle(canRollbackAccountCreation ? R.string.add_account : R.string.welcome_desktop);
}
private void registerForEvents() {
this.dcContext = DcHelper.getContext(this);
DcHelper.getEventCenter(this).addObserver(2051, this);
}
public boolean onOptionsItemSelected(MenuItem menuItem) {
super.onOptionsItemSelected(menuItem);
if (menuItem.getItemId() != 16908332) {
return false;
}
onBackPressed();
return true;
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
public void onStart() {
super.onStart();
String stringExtra = getIntent().getStringExtra(BACKUP_QR_EXTRA);
if (stringExtra != null) {
getIntent().removeExtra(BACKUP_QR_EXTRA);
startBackupTransfer(stringExtra);
}
}
public void onDestroy() {
super.onDestroy();
DcHelper.getEventCenter(this).removeObservers(this);
}
public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
Permissions.onRequestPermissionsResult((Activity) this, i, strArr, iArr);
}
private void startInstantOnboardingActivity() {
Intent intent = new Intent((Context) this, (Class<?>) InstantOnboardingActivity.class);
intent.putExtra("from_welcome", true);
startActivity(intent);
}
private void startAddAsSecondDeviceActivity() {
new IntentIntegrator(this).setCaptureActivity(RegistrationQrActivity.class).addExtra(RegistrationQrActivity.ADD_AS_SECOND_DEVICE_EXTRA, true).initiateScan();
}
private void startImportBackup() {
Permissions.with((Activity) this).request("android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE").alwaysGrantOnSdk30().ifNecessary().withPermanentDenialDialog(getString(R.string.perm_explain_access_to_storage_denied)).onAllGranted(new Runnable() {
@Override
public final void run() {
WelcomeActivity.this.m1327xb76ac1a2();
}
}).execute();
}
void m1327xb76ac1a2() {
File imexDir = DcHelper.getImexDir();
if (Build.VERSION.SDK_INT >= 30) {
AttachmentManager.selectMediaType(this, "application/x-tar", null, PICK_BACKUP, StorageUtil.getDownloadUri());
return;
}
final String imexHasBackup = this.dcContext.imexHasBackup(imexDir.getAbsolutePath());
if (imexHasBackup != null) {
new AlertDialog.Builder(this).setTitle(R.string.import_backup_title).setMessage(String.format(getResources().getString(R.string.import_backup_ask), imexHasBackup)).setNegativeButton(android.R.string.cancel, (DialogInterface.OnClickListener) null).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public final void onClick(DialogInterface dialogInterface, int i) {
WelcomeActivity.this.m1326xf47e5843(imexHasBackup, dialogInterface, i);
}
}).show();
} else {
new AlertDialog.Builder(this).setTitle(R.string.import_backup_title).setMessage(String.format(getResources().getString(R.string.import_backup_no_backup_found), imexDir.getAbsolutePath())).setPositiveButton(android.R.string.ok, (DialogInterface.OnClickListener) null).show();
}
}
void m1326xf47e5843(String str, DialogInterface dialogInterface, int i) {
startImport(str, null);
}
private void startImport(final String str, final Uri uri) {
this.notificationController = GenericForegroundService.startForegroundTask(this, getString(R.string.import_backup_title));
ProgressDialog progressDialog = this.progressDialog;
if (progressDialog != null) {
progressDialog.dismiss();
this.progressDialog = null;
}
this.imexUserAborted = false;
ProgressDialog progressDialog2 = new ProgressDialog(this);
this.progressDialog = progressDialog2;
progressDialog2.setMessage(getResources().getString(R.string.one_moment));
this.progressDialog.setCanceledOnTouchOutside(false);
this.progressDialog.setCancelable(false);
this.progressDialog.setButton(-2, getResources().getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public final void onClick(DialogInterface dialogInterface, int i) {
WelcomeActivity.this.m1324lambda$startImport$6$orgthoughtcrimesecuresmsWelcomeActivity(dialogInterface, i);
}
});
this.progressDialog.show();
Util.runOnBackground(new Runnable() {
@Override
public final void run() {
WelcomeActivity.this.m1325lambda$startImport$7$orgthoughtcrimesecuresmsWelcomeActivity(str, uri);
}
});
}
void m1324lambda$startImport$6$orgthoughtcrimesecuresmsWelcomeActivity(DialogInterface dialogInterface, int i) {
this.imexUserAborted = true;
this.dcContext.stopOngoingProcess();
this.notificationController.close();
cleanupTempBackupFile();
}
void m1325lambda$startImport$7$orgthoughtcrimesecuresmsWelcomeActivity(String str, Uri uri) {
if (str == null) {
try {
str = copyToCacheDir(uri).getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
this.notificationController.close();
cleanupTempBackupFile();
return;
}
}
DcHelper.getEventCenter(this).captureNextError();
this.dcContext.imex(12, str);
}
private File copyToCacheDir(Uri uri) throws IOException {
InputStream openInputStream = getContentResolver().openInputStream(uri);
try {
File createTempFile = File.createTempFile(TMP_BACKUP_FILE, ".tmp", getCacheDir());
FileOutputStream fileOutputStream = new FileOutputStream(createTempFile);
try {
StreamUtil.copy(openInputStream, fileOutputStream);
fileOutputStream.close();
if (openInputStream != null) {
openInputStream.close();
}
return createTempFile;
} finally {
}
} catch (Throwable th) {
if (openInputStream != null) {
try {
openInputStream.close();
} catch (Throwable th2) {
th.addSuppressed(th2);
}
}
throw th;
}
}
private void startBackupTransfer(String str) {
ProgressDialog progressDialog = this.progressDialog;
if (progressDialog != null) {
progressDialog.dismiss();
this.progressDialog = null;
}
Intent intent = new Intent((Context) this, (Class<?>) BackupTransferActivity.class);
intent.putExtra(BackupTransferActivity.TRANSFER_MODE, BackupTransferActivity.TransferMode.RECEIVER_SCAN_QR.getInt());
intent.putExtra(BackupTransferActivity.QR_CODE, str);
startActivity(intent);
}
private void progressError(String str) {
this.progressDialog.dismiss();
maybeShowConfigurationError(this, str);
}
private void progressUpdate(int i) {
this.progressDialog.setMessage(getResources().getString(R.string.one_moment) + String.format(" %d%%", Integer.valueOf(i / 10)));
}
private void progressSuccess() {
DcHelper.getEventCenter(this).endCaptureNextError();
this.progressDialog.dismiss();
Intent intent = new Intent(getApplicationContext(), (Class<?>) ConversationListActivity.class);
intent.putExtra("from_welcome", true);
startActivity(intent);
finish();
}
public static void maybeShowConfigurationError(Activity activity, String str) {
if (activity.isFinishing() || str == null || str.isEmpty()) {
return;
}
AlertDialog create = new AlertDialog.Builder(activity).setMessage(str).setPositiveButton(android.R.string.ok, (DialogInterface.OnClickListener) null).create();
create.show();
try {
Linkify.addLinks((TextView) create.findViewById(android.R.id.message), 3);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
@Override
public void handleEvent(DcEvent dcEvent) {
if (dcEvent.getId() == 2051) {
long data1Int = dcEvent.getData1Int();
if (this.progressDialog == null || this.notificationController == null) {
if (data1Int == 1000) {
finish();
return;
}
return;
}
if (data1Int == 0) {
if (!this.imexUserAborted) {
progressError(this.dcContext.getLastError());
}
this.notificationController.close();
cleanupTempBackupFile();
return;
}
if (data1Int < 1000) {
int i = (int) data1Int;
progressUpdate(i);
this.notificationController.setProgress(1000L, data1Int, String.format(" %d%%", Integer.valueOf(i / 10)));
} else if (data1Int == 1000) {
DcHelper.getAccounts(this).startIo();
progressSuccess();
this.notificationController.close();
cleanupTempBackupFile();
}
}
}
protected void onActivityResult(int i, int i2, Intent intent) {
super.onActivityResult(i, i2, intent);
if (i2 != -1) {
return;
}
if (i != 49374) {
if (i == 20574) {
Uri data = intent != null ? intent.getData() : null;
if (data == null) {
Log.e(TAG, " Can't import null URI");
return;
} else {
startImport(null, data);
return;
}
}
return;
}
final String stringExtra = intent.getStringExtra(RegistrationQrActivity.QRDATA_EXTRA);
if (stringExtra == null) {
IntentResult parseActivityResult = IntentIntegrator.parseActivityResult(i, i2, intent);
if (parseActivityResult == null || parseActivityResult.getFormatName() == null) {
return;
} else {
stringExtra = parseActivityResult.getContents();
}
}
int state = this.dcContext.checkQr(stringExtra).getState();
if (state == 252) {
new AlertDialog.Builder(this).setTitle(R.string.multidevice_receiver_title).setMessage(R.string.multidevice_receiver_scanning_ask).setPositiveButton(R.string.perm_continue, new DialogInterface.OnClickListener() {
@Override
public final void onClick(DialogInterface dialogInterface, int i3) {
WelcomeActivity.this.m1320x16dfe7e3(stringExtra, dialogInterface, i3);
}
}).setNegativeButton(R.string.cancel, (DialogInterface.OnClickListener) null).setCancelable(false).show();
} else if (state == 255) {
new AlertDialog.Builder(this).setTitle(R.string.multidevice_receiver_title).setMessage(R.string.multidevice_receiver_needs_update).setPositiveButton(R.string.ok, (DialogInterface.OnClickListener) null).show();
} else {
new AlertDialog.Builder(this).setMessage(R.string.qraccount_qr_code_cannot_be_used).setPositiveButton(R.string.ok, (DialogInterface.OnClickListener) null).show();
}
}
void m1320x16dfe7e3(String str, DialogInterface dialogInterface, int i) {
startBackupTransfer(str);
}
private void cleanupTempBackupFile() {
try {
for (File file : getCacheDir().listFiles(new FilenameFilter() {
@Override
public final boolean accept(File file2, String str) {
boolean startsWith;
startsWith = str.startsWith(WelcomeActivity.TMP_BACKUP_FILE);
return startsWith;
}
})) {
if (file.getName().endsWith("tmp")) {
Log.i(TAG, "Deleting temp backup file " + file);
file.delete();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void onBackPressed() {
AccountManager accountManager = AccountManager.getInstance();
if (accountManager.canRollbackAccountCreation(this)) {
accountManager.rollbackAccountCreation(this);
} else {
super.onBackPressed();
}
}
}