gpt4 book ai didi

android - 打开应用程序时如何读取Android剪贴板(文本)?

转载 作者:行者123 更新时间:2023-12-01 23:32:34 24 4
gpt4 key购买 nike

我正在制作一个应用程序,最终我想在用户使用正则表达式打开我的应用程序以提供操作时检查剪贴板的内容。我目前正在尝试通过在 Toast 中显示数据来确保正确获取数据。

我在我的 MainActivity 的 OnCreate 函数上使用 ClipboardManager,如官方文档和许多其他地方所述,尽管我在尝试访问剪贴板数据时遇到空指针错误。

但是,如果我在尝试获取该数据之前设置了 1-2 秒的延迟(我使用 handler.postDelayed 进行延迟操作),我可以正确读取剪贴板的内容,这很奇怪......

为什么会发生这种情况以及如何在打开应用程序时立即访问剪贴板的数据?

我使用的代码是:

ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);;
ClipData clipData = clipboardManager.getPrimaryClip();
ClipData.Item item = clipData.getItemAt(0);
String clipText = item.getText().toString();
Toast.makeText(getApplicationContext(), clipText, Toast.LENGTH_SHORT).show();

它在第 3 行崩溃并出现以下错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ClipData$Item android.content.ClipData.getItemAt(int)' on a null object reference

谢谢

最佳答案

从 Android 10 及更高版本开始,您的应用需要具有输入焦点才能成功读取剪贴板。否则 getPrimaryClip() 返回 null。

onCreate() 对您的 Activity 来说太早了,无法获得输入焦点。您可以覆盖 onWindowFocusChanged() 以尝试在获得焦点时立即读取剪贴板。

关于android - 打开应用程序时如何读取Android剪贴板(文本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66079485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com