导航菜单

页面标题

页面副标题

Delta Chat v1.58.3 - ShareActivity.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());
    }
}