diff --git a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java index 1d293ca1..735c782d 100644 --- a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java +++ b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java @@ -5,7 +5,6 @@ import android.app.AlertDialog; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; -import android.content.Intent; import android.media.AudioManager; import android.os.Environment; import android.text.TextUtils; @@ -678,17 +677,10 @@ public class TermuxTerminalViewClient extends TermuxTerminalViewClientBase { String transcriptText = ShellUtils.getTerminalSessionTranscriptText(session, false, true); if (transcriptText == null) return; - try { - // See https://github.com/termux/termux-app/issues/1166. - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - transcriptText = DataUtils.getTruncatedCommandOutput(transcriptText, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, false, true, false).trim(); - intent.putExtra(Intent.EXTRA_TEXT, transcriptText); - intent.putExtra(Intent.EXTRA_SUBJECT, mActivity.getString(R.string.title_share_transcript)); - mActivity.startActivity(Intent.createChooser(intent, mActivity.getString(R.string.title_share_transcript_with))); - } catch (Exception e) { - Logger.logStackTraceWithMessage(LOG_TAG,"Failed to get share session transcript of length " + transcriptText.length(), e); - } + // See https://github.com/termux/termux-app/issues/1166. + transcriptText = DataUtils.getTruncatedCommandOutput(transcriptText, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, false, true, false).trim(); + ShareUtils.shareText(mActivity, mActivity.getString(R.string.title_share_transcript), + transcriptText, mActivity.getString(R.string.title_share_transcript_with)); } public void showUrlSelection() { diff --git a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java index def8bfa8..c7793f75 100644 --- a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java @@ -23,6 +23,8 @@ import com.termux.shared.android.PermissionUtils; import java.nio.charset.Charset; +import javax.annotation.Nullable; + public class ShareUtils { private static final String LOG_TAG = "ShareUtils"; @@ -56,6 +58,18 @@ public class ShareUtils { * @param text The text to share. */ public static void shareText(final Context context, final String subject, final String text) { + shareText(context, subject, text, null); + } + + /** + * Share text. + * + * @param context The context for operations. + * @param subject The subject for sharing. + * @param text The text to share. + * @param title The title for share menu. + */ + public static void shareText(final Context context, final String subject, final String text, @Nullable final String title) { if (context == null || text == null) return; final Intent shareTextIntent = new Intent(Intent.ACTION_SEND); @@ -63,7 +77,7 @@ public class ShareUtils { shareTextIntent.putExtra(Intent.EXTRA_SUBJECT, subject); shareTextIntent.putExtra(Intent.EXTRA_TEXT, DataUtils.getTruncatedCommandOutput(text, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, true, false, false)); - openSystemAppChooser(context, shareTextIntent, context.getString(R.string.title_share_with)); + openSystemAppChooser(context, shareTextIntent, DataUtils.isNullOrEmpty(title) ? context.getString(R.string.title_share_with) : title); } /**