草庐IT

android - ClipData getPrimaryClipDescription() 在 Android 6.0.1 中返回 null

coder 2023-12-21 原文

if (mClipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN) ||
            mClipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML))

getPrimaryClipDescription() 在少数 Android 6.0.1 中为 null。

Attempt to invoke virtual method 'boolean android.content.ClipDescription.hasMimeType(java.lang.String)' on a null object reference

更新

请尝试三星 Galaxy S5 和 Note 4 等设备。

最佳答案

我使用 Genymotion 模拟器在 Galaxy S6 - 6.0.0 图像上测试了这段代码,我没有收到任何错误。

       // Copy to clipbaord
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
       // ClipData clip = ClipData.newPlainText("Label", "TEXT");
       // clipboard.setPrimaryClip(clip);

        if (clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN) ||
                clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML))
        {
            Log.d("Copied!", "Copied!");
        }

一些建议:

  1. 检查 mClipboard 是否已实例化。
  2. 我已经用 ClipData clip 和 setPrimaryClip 测试了代码 注释行和未注释行都没有错误。但是,您可以 如果您还没有,请添加这些行来测试您的代码。
  3. hasMimeType()getPrimaryClipDescription()已经 自 API 11 以来添加到 Android,因此三星没有理由 禁用它们(不提供足够的错误消息)。
  4. 尝试在您的主要代码之前添加此代码:

    如果 (!(mClipboard .hasPrimaryClip()))

    这将确保剪贴板有一个主剪辑,您可以 处理。

  5. 检查来自 Android 网站的此链接: https://developer.android.com/guide/topics/text/copy-paste.html它 有很好的关于复制和粘贴内容的信息和代码。

  6. 最后,联系三星。你可以在三星上发帖提问 开发者社区http://developer.samsung.com/community去检查 问题的根源,因为这个问题是三星特有的 设备。

关于android - ClipData getPrimaryClipDescription() 在 Android 6.0.1 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320907/

有关android - ClipData getPrimaryClipDescription() 在 Android 6.0.1 中返回 null的更多相关文章

随机推荐