- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
请帮我解决这个问题。这是我的代码
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipboard.addPrimaryClipChangedListener(this);
return START_STICKY;
}
@Override
public void onPrimaryClipChanged() {
Log.d("log",clipboard.getPrimaryClip()+"");
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
String clipText = item.getText().toString();
Log.d("log",clipText);
new SendClipBoardData().execute(postClipDataUrl,clipText);
}
有时我在 ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
处遇到错误
错误:java.lang.NullPointerException:尝试在空对象引用上调用接口(interface)方法“java.lang.String java.lang.CharSequence.toString()”
clipboard.getPrimaryClip()
返回 ClipData { text/plain {NULL} }
,但是当我在我的笔记中粘贴相同的复制文本时,我可以看到文本,但我无法检测到问题,有时有效有时无效。
还有一个问题,当复制工作正常时,我得到了两到三次复制的文本结果,但我的事件只工作了一次,这可能是什么?提前致谢。
最佳答案
首先,无法保证剪贴板中确实有任何数据——例如,当您第一次打开手机时,您会认为剪贴板是空的。其次,如果有数据,你需要检查它的格式是否正确。尝试将图像粘贴到文本框中没有任何意义。
如果没有内容,则 clipboard.getPrimaryClip()
将返回 null。如果有 内容,但不是文本(例如,URL 的处理方式与文本不同),则 item.getText()
将返回 null。这会导致您的代码出现异常,因为您正在对空引用调用 toString()
。
Android developer docs显示一个简短的示例,有点像这样:
if (clipboard.hasPrimaryClip()
&& clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))
{
// Put your paste code here
}
但正如我所提到的,某些内容(如 URL)将不匹配此模式,即使它们可以安全地转换为文本。要处理所有这些事情,您可以尝试这样做:
if (clipboard.hasPrimaryClip())
{
ClipData data = clipboard.getPrimaryClip();
if (data.getItemCount() > 0)
{
CharSequence text = data.getItemAt(0).coerceToText(this);
if (text != null)
{
// Put your paste-handling code here
}
}
}
关于java - getPrimaryClip() 返回 ClipData { text/plain {NULL} },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610165/
当我使用 ClipData 时,我得到 { text/plain {NULL} } 但如果我使用已弃用的方法 mClipboard.getText() 它运行良好。 if (mClipboard.ge
请帮我解决这个问题。这是我的代码 @Override public int onStartCommand(Intent intent, int flags, int startId) {
我是一名优秀的程序员,十分优秀!