android - 将图像添加到 Android 中的消息应用程序

标签 android keyboard stringbuilder

我正在尝试创建自定义键盘并在 Android SDK 中为其使用 "SoftKeyboard" 示例。我对该示例做了一些修改并创建了我的自定义键盘。我可以将此自定义键盘与我的 Android 设备的默认消息应用程序一起使用。

现在我想在我的自定义键盘上单击一个按钮并在我键入 SMS 时添加一个图像。我注意到 "SoftKeyBoard.java" 类中有 String Builder (private StringBuilder mComposing = new StringBuilder()) 并且附加了字符当我们使用键盘输入字母时。

我试着像下面这样附加我的 SD 卡的图像,

        String imageDataString = "";

        String path = Environment.getExternalStorageDirectory().toString() + "/SamplePictures/";
         File file = new File(path, "myimage.jpg");
         try {

             FileInputStream imageInFile = new FileInputStream(file);
             byte imageData[] = new byte[(int) file.length()];
             imageInFile.read(imageData);

             // Converting Image byte array into Base64 String
             imageDataString = encodeImage(imageData);



            imageInFile.close();

         } catch (FileNotFoundException e) {
             System.out.println("Image not found" + e);
         } catch (IOException ioe) {
             System.out.println("Exception while reading the Image " + ioe);
         }

然后我将“imageDataString”附加到如下所示的字符串生成器中,

mComposing.append(imageDataString);

但是我有这么多字符,而不是图像。 使用键盘输入短信时是否可以插入图片?

更新:我将 ImageSpan 和 Spannable 与以下代码结合使用。

SpannableStringBuilder ssb = new SpannableStringBuilder( "Here's a my picture  " );
            Bitmap smiley = BitmapFactory.decodeResource( getResources(), R.drawable.bitmap );
            ssb.setSpan( new ImageSpan( smiley ), 16, 17,Spannable.SPAN_INCLUSIVE_INCLUSIVE );
            mComposing.append(ssb);

但它只显示“这是我的照片” 而没有图像。我使用 EditText 创建了一个单独的示例应用程序,并将上面的“ssb”变量设置为该 EditText 的文本。然后它可以很好地显示图像。但它不适用于消息应用程序。如果我可以设置消息应用程序 EditText,我想我可以设置图像。

有什么方法可以访问和更新消息应用程序的编辑文本? 提前致谢..!!

最佳答案

我想你想要做的是使用添加到 SpannableImageSpan,一个已经描述过的解决方案 here .按下键盘上的图像按钮后,您将触发一个方法,该方法应该更新 editText,方法是从中获取现有文本,添加一个包含您的图像的 ImageSpan 和将其设置回 editText

关于android - 将图像添加到 Android 中的消息应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15105567/

相关文章:

python - 如何使用python打开触摸键盘?

java - 就 StringBuilder 和 StringBuffer 类而言,同步意味着什么?

android - 图像按钮必须放置左右角

android - 如何停止横幅广告加载?

iPhone键盘返回键

c# - ----s 在 StringBuilder.ToString() 的上下文中是什么意思?

java - 使用 StringBuilder 和 BufferedReader,如何在文本文件中的每个单词后添加逗号并生成字符串?

java - 为什么这个 if 语句被跳过?

android - 在android中使用opencv捕获视频帧

events - 忽略 Qt 中的鼠标和键盘事件