正在查看: Delta Chat v1.58.3 应用的 ShareActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Delta Chat v1.58.3 应用的 ShareActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.thoughtcrime.securesms;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import com.b44t.messenger.DcContext;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.thoughtcrime.securesms.ResolveMediaTask;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.MailtoUtil;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.RelayUtil;
public class ShareActivity extends PassphraseRequiredActionBarActivity implements ResolveMediaTask.OnMediaResolvedListener {
public static final String EXTRA_ACC_ID = "acc_id";
public static final String EXTRA_CHAT_ID = "chat_id";
public static final String EXTRA_TITLE = "extra_title";
private static final String TAG = "ShareActivity";
private DcContext dcContext;
private boolean isResolvingUrisOnMainThread;
private ArrayList<Uri> resolvedExtras;
@Override
protected void onPreCreate() {
this.dynamicTheme = new DynamicNoActionBarTheme();
super.onPreCreate();
}
@Override
protected void onCreate(Bundle bundle, boolean z) {
this.dcContext = DcHelper.getContext(this);
setContentView(R.layout.share_activity);
initializeToolbar();
initializeMedia();
}
protected void onNewIntent(Intent intent) {
Log.w(TAG, "onNewIntent()");
super.onNewIntent(intent);
setIntent(intent);
initializeMedia();
}
protected void onDestroy() {
super.onDestroy();
ResolveMediaTask.cancelTasks();
}
private void initializeToolbar() {
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
}
private void initializeMedia() {
this.resolvedExtras = new ArrayList<>();
ArrayList arrayList = new ArrayList();
if ("android.intent.action.SEND".equals(getIntent().getAction()) && getIntent().getParcelableExtra("android.intent.extra.STREAM") != null) {
arrayList.add((Uri) getIntent().getParcelableExtra("android.intent.extra.STREAM"));
} else if (getIntent().getParcelableArrayListExtra("android.intent.extra.STREAM") != null) {
arrayList = getIntent().getParcelableArrayListExtra("android.intent.extra.STREAM");
} else {
Uri data = getIntent().getData();
if (MailtoUtil.isMailto(data)) {
String[] stringArrayExtra = getIntent().getStringArrayExtra("android.intent.extra.EMAIL");
if (stringArrayExtra == null || stringArrayExtra.length == 0) {
getIntent().putExtra("android.intent.extra.EMAIL", MailtoUtil.getRecipients(data));
}
String stringExtra = getIntent().getStringExtra("android.intent.extra.TEXT");
if (stringExtra == null || stringExtra.isEmpty()) {
getIntent().putExtra("android.intent.extra.TEXT", MailtoUtil.getText(data));
}
}
}
if (needsFilePermission(arrayList)) {
if (Permissions.hasAll(this, "android.permission.READ_EXTERNAL_STORAGE")) {
m1311xb6b3db21(arrayList);
return;
} else {
requestPermissionForFiles(arrayList);
return;
}
}
m1311xb6b3db21(arrayList);
}
private boolean needsFilePermission(List<Uri> list) {
Iterator<Uri> it = list.iterator();
while (it.hasNext()) {
if (hasFileScheme(it.next())) {
return true;
}
}
return false;
}
private void requestPermissionForFiles(final List<Uri> list) {
Permissions.with((Activity) this).request("android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE").alwaysGrantOnSdk33().ifNecessary().withPermanentDenialDialog(getString(R.string.perm_explain_access_to_storage_denied)).onAllGranted(new Runnable() {
@Override
public final void run() {
ShareActivity.this.m1311xb6b3db21(list);
}
}).onAnyDenied(new Runnable() {
@Override
public final void run() {
ShareActivity.this.abortShare();
}
}).execute();
}
public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
Permissions.onRequestPermissionsResult((Activity) this, i, strArr, iArr);
}
public void abortShare() {
Toast.makeText((Context) this, R.string.share_abort, 1).show();
finish();
}
public void m1311xb6b3db21(List<Uri> list) {
this.isResolvingUrisOnMainThread = true;
for (Uri uri : list) {
if (uri != null && PartAuthority.isLocalUri(uri)) {
this.resolvedExtras.add(uri);
} else {
new ResolveMediaTask(this, this).execute(uri);
}
}
if (!ResolveMediaTask.isExecuting()) {
handleResolvedMedia(getIntent());
}
this.isResolvingUrisOnMainThread = false;
}
public boolean onOptionsItemSelected(MenuItem menuItem) {
super.onOptionsItemSelected(menuItem);
if (menuItem.getItemId() != 16908332) {
return false;
}
finish();
return true;
}
@Override
public void onMediaResolved(Uri uri) {
if (uri != null) {
this.resolvedExtras.add(uri);
}
if (ResolveMediaTask.isExecuting() || this.isResolvingUrisOnMainThread) {
return;
}
handleResolvedMedia(getIntent());
}
private void handleResolvedMedia(Intent intent) {
int intExtra = intent.getIntExtra(EXTRA_ACC_ID, -1);
int intExtra2 = intent.getIntExtra("chat_id", -1);
String[] stringArrayExtra = getIntent().getStringArrayExtra("android.intent.extra.EMAIL");
if (intExtra2 == -1 && stringArrayExtra != null && stringArrayExtra.length > 0) {
String str = stringArrayExtra[0];
int lookupContactIdByAddr = this.dcContext.lookupContactIdByAddr(str);
if (lookupContactIdByAddr == 0) {
lookupContactIdByAddr = this.dcContext.createContact((String) null, str);
}
intExtra2 = this.dcContext.createChatByContactId(lookupContactIdByAddr);
}
if (intExtra != -1 && intExtra2 != -1) {
Intent baseShareIntent = getBaseShareIntent(ConversationActivity.class);
baseShareIntent.putExtra("chat_id", intExtra2);
baseShareIntent.putExtra("account_id", intExtra);
RelayUtil.setSharedUris(baseShareIntent, this.resolvedExtras);
startActivity(baseShareIntent);
} else {
Intent baseShareIntent2 = getBaseShareIntent(ConversationListRelayingActivity.class);
RelayUtil.setSharedUris(baseShareIntent2, this.resolvedExtras);
ConversationListRelayingActivity.start((Activity) this, baseShareIntent2);
}
finish();
}
private Intent getBaseShareIntent(Class<?> cls) {
Uri uri;
CharSequence charSequenceExtra;
Intent intent = new Intent((Context) this, cls);
String stringExtra = getIntent().getStringExtra(EXTRA_TITLE);
if (stringExtra != null) {
RelayUtil.setSharedTitle(intent, stringExtra);
}
String stringExtra2 = getIntent().getStringExtra("android.intent.extra.TEXT");
if (stringExtra2 == null && (charSequenceExtra = getIntent().getCharSequenceExtra("android.intent.extra.TEXT")) != null) {
stringExtra2 = charSequenceExtra.toString();
}
if (stringExtra2 != null) {
RelayUtil.setSharedText(intent, stringExtra2.toString());
}
if (this.resolvedExtras.size() > 0 && (uri = this.resolvedExtras.get(0)) != null) {
intent.setDataAndType(uri, getMimeType(uri));
}
return intent;
}
private String getMimeType(Uri uri) {
String mimeType;
return (uri == null || (mimeType = MediaUtil.getMimeType(getApplicationContext(), uri)) == null) ? MediaUtil.getCorrectedMimeType(getIntent().getType()) : mimeType;
}
private boolean hasFileScheme(Uri uri) {
if (uri == null) {
return false;
}
return "file".equals(uri.getScheme());
}
}