22
33import android .content .ClipData ;
44import android .content .ClipData .Item ;
5+ import android .content .ClipDescription ;
56import android .content .ClipboardManager ;
67import android .content .Context ;
78import android .content .Intent ;
9+ import android .os .Build ;
10+ import android .os .PersistableBundle ;
811import android .text .TextUtils ;
912
1013import 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