Skip to content

Commit 9e81106

Browse files
clipboard api allow setting sensitive content
1 parent f3c1f4d commit 9e81106

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

app/src/main/java/com/termux/api/apis/ClipboardAPI.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
import android.content.ClipData;
44
import android.content.ClipData.Item;
5+
import android.content.ClipDescription;
56
import android.content.ClipboardManager;
67
import android.content.Context;
78
import android.content.Intent;
9+
import android.os.Build;
10+
import android.os.PersistableBundle;
811
import android.text.TextUtils;
912

1013
import com.termux.api.TermuxApiReceiver;
@@ -26,6 +29,7 @@ public static void onReceive(TermuxApiReceiver apiReceiver, final Context contex
2629
boolean version2 = "2".equals(intent.getStringExtra("api_version"));
2730
if (version2) {
2831
boolean set = intent.getBooleanExtra("set", false);
32+
boolean sensitive = intent.getBooleanExtra("sensitive", false);
2933
if (set) {
3034
ResultReturner.returnData(apiReceiver, intent, new ResultReturner.WithStringInput() {
3135
@Override
@@ -35,7 +39,15 @@ protected boolean trimInput() {
3539

3640
@Override
3741
public void writeResult(PrintWriter out) {
38-
clipboard.setPrimaryClip(ClipData.newPlainText("", inputString));
42+
ClipData clipData = ClipData.newPlainText("", inputString);
43+
if (sensitive) {
44+
PersistableBundle extras = new PersistableBundle();
45+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
46+
extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true);
47+
}
48+
clipData.getDescription().setExtras(extras);
49+
}
50+
clipboard.setPrimaryClip(clipData);
3951
}
4052
});
4153
} else {

0 commit comments

Comments
 (0)