Add attribution to clipboard text editing

Shows the app that text being edited was copied from.

Bug: 195554988
Test: manual
Change-Id: I0cd64d15ded2089926475a9c7994bffb8f54f761
This commit is contained in:
Miranda Kephart
2022-01-20 16:29:01 -05:00
parent 304984505b
commit 551b26eb05
2 changed files with 18 additions and 1 deletions

View File

@@ -2384,6 +2384,8 @@
<string name="clipboard_edit_text_copy">Copy</string>
<!-- Text informing user that content has been copied to the system clipboard [CHAR LIMIT=NONE] -->
<string name="clipboard_overlay_text_copied">Copied</string>
<!-- Text informing user where text being edited was copied from [CHAR LIMIT=NONE] -->
<string name="clipboard_edit_source">From <xliff:g id="appName" example="Gmail">%1$s</xliff:g></string>
<!-- Label for button to dismiss clipboard overlay [CHAR LIMIT=NONE] -->
<string name="clipboard_dismiss_description">Dismiss copy UI</string>
</resources>

View File

@@ -22,9 +22,12 @@ import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import com.android.systemui.R;
@@ -32,8 +35,11 @@ import com.android.systemui.R;
* Lightweight activity for editing text clipboard contents
*/
public class EditTextActivity extends Activity {
private static final String TAG = "EditTextActivity";
private EditText mEditText;
private ClipboardManager mClipboardManager;
private TextView mAttribution;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -42,6 +48,7 @@ public class EditTextActivity extends Activity {
findViewById(R.id.copy_button).setOnClickListener((v) -> saveToClipboard());
findViewById(R.id.share).setOnClickListener((v) -> share());
mEditText = findViewById(R.id.edit_text);
mAttribution = findViewById(R.id.attribution);
mClipboardManager = requireNonNull(getSystemService(ClipboardManager.class));
}
@@ -53,7 +60,15 @@ public class EditTextActivity extends Activity {
finish();
return;
}
// TODO: put clip attribution in R.id.attribution TextView
PackageManager pm = getApplicationContext().getPackageManager();
try {
CharSequence label = pm.getApplicationLabel(
pm.getApplicationInfo(mClipboardManager.getPrimaryClipSource(),
PackageManager.ApplicationInfoFlags.of(0)));
mAttribution.setText(getResources().getString(R.string.clipboard_edit_source, label));
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Package not found: " + mClipboardManager.getPrimaryClipSource(), e);
}
mEditText.setText(clip.getItemAt(0).getText());
mEditText.requestFocus();
}