diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..e737863bb --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*.{kt,java,xml,gradle,md}] +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true +end_of_line = lf diff --git a/app/src/main/java/com/termux/api/apis/ClipboardAPI.java b/app/src/main/java/com/termux/api/apis/ClipboardAPI.java index 83d4ab640..51b17d617 100644 --- a/app/src/main/java/com/termux/api/apis/ClipboardAPI.java +++ b/app/src/main/java/com/termux/api/apis/ClipboardAPI.java @@ -2,9 +2,12 @@ import android.content.ClipData; import android.content.ClipData.Item; +import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; +import android.os.Build; +import android.os.PersistableBundle; import android.text.TextUtils; import com.termux.api.TermuxApiReceiver; @@ -26,6 +29,7 @@ public static void onReceive(TermuxApiReceiver apiReceiver, final Context contex boolean version2 = "2".equals(intent.getStringExtra("api_version")); if (version2) { boolean set = intent.getBooleanExtra("set", false); + boolean sensitive = intent.getBooleanExtra("sensitive", false); if (set) { ResultReturner.returnData(apiReceiver, intent, new ResultReturner.WithStringInput() { @Override @@ -35,7 +39,14 @@ protected boolean trimInput() { @Override public void writeResult(PrintWriter out) { - clipboard.setPrimaryClip(ClipData.newPlainText("", inputString)); + ClipData clipData = ClipData.newPlainText("", inputString); + // EXTRA_IS_SENSITIVE is only available on Android 13 and above. + if (sensitive && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + PersistableBundle extras = new PersistableBundle(); + extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true); + clipData.getDescription().setExtras(extras); + } + clipboard.setPrimaryClip(clipData); } }); } else {