Merge pull request #2519 from open-keychain/clipboard_access_fix
Fix decryption from clipboard on Android 10
This commit is contained in:
commit
974f858433
|
@ -47,6 +47,8 @@ public class DecryptActivity extends BaseActivity {
|
||||||
/* Intents */
|
/* Intents */
|
||||||
public static final String ACTION_DECRYPT_FROM_CLIPBOARD = "DECRYPT_DATA_CLIPBOARD";
|
public static final String ACTION_DECRYPT_FROM_CLIPBOARD = "DECRYPT_DATA_CLIPBOARD";
|
||||||
|
|
||||||
|
public static final String EXTRA_CLIPDATA = "DECRYPT_DATA_CLIPBOARD_DATA";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -123,12 +125,10 @@ public class DecryptActivity extends BaseActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
case ACTION_DECRYPT_FROM_CLIPBOARD: {
|
case ACTION_DECRYPT_FROM_CLIPBOARD: {
|
||||||
ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
ClipData clip = null;
|
||||||
if (clipMan == null) {
|
if (intent.hasExtra(EXTRA_CLIPDATA)) {
|
||||||
break;
|
clip = intent.getParcelableExtra(EXTRA_CLIPDATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
ClipData clip = clipMan.getPrimaryClip();
|
|
||||||
if (clip == null) {
|
if (clip == null) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -149,6 +149,7 @@ public class DecryptActivity extends BaseActivity {
|
||||||
String text = clip.getItemAt(0).coerceToText(this).toString();
|
String text = clip.getItemAt(0).coerceToText(this).toString();
|
||||||
uri = readToTempFile(text);
|
uri = readToTempFile(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
uris.add(uri);
|
uris.add(uri);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,9 @@ package org.sufficientlysecure.keychain.ui;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.ClipData;
|
||||||
|
import android.content.ClipboardManager;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
@ -39,6 +42,7 @@ import org.sufficientlysecure.keychain.ui.util.Notify;
|
||||||
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
|
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
|
||||||
import org.sufficientlysecure.keychain.ui.util.SubtleAttentionSeeker;
|
import org.sufficientlysecure.keychain.ui.util.SubtleAttentionSeeker;
|
||||||
import org.sufficientlysecure.keychain.util.FileHelper;
|
import org.sufficientlysecure.keychain.util.FileHelper;
|
||||||
|
import timber.log.Timber;
|
||||||
|
|
||||||
public class EncryptDecryptFragment extends Fragment {
|
public class EncryptDecryptFragment extends Fragment {
|
||||||
|
|
||||||
|
@ -108,7 +112,20 @@ public class EncryptDecryptFragment extends Fragment {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClipboardManager clipMan = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
if (clipMan == null) {
|
||||||
|
Timber.e("Couldn't get ClipboardManager instance!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClipData clip = clipMan.getPrimaryClip();
|
||||||
|
if (clip == null) {
|
||||||
|
Timber.e("Couldn't get clipboard data!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Intent clipboardDecrypt = new Intent(getActivity(), DecryptActivity.class);
|
Intent clipboardDecrypt = new Intent(getActivity(), DecryptActivity.class);
|
||||||
|
clipboardDecrypt.putExtra(DecryptActivity.EXTRA_CLIPDATA, clip);
|
||||||
clipboardDecrypt.setAction(DecryptActivity.ACTION_DECRYPT_FROM_CLIPBOARD);
|
clipboardDecrypt.setAction(DecryptActivity.ACTION_DECRYPT_FROM_CLIPBOARD);
|
||||||
startActivityForResult(clipboardDecrypt, 0);
|
startActivityForResult(clipboardDecrypt, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue