Flutter自定义文本工具栏:查询支持Intent.ACTION_PROCESS_TEXT的活动
解决Flutter自定义文本选择工具栏无法获取ACTION_PROCESS_TEXT活动的问题
针对你遇到的Intent.ACTION_PROCESS_TEXT查询返回空的问题,按以下步骤排查修复:
修正Intent构造参数
ACTION_PROCESS_TEXT要求必须指定text/plain的MIME类型,部分应用还依赖EXTRA_PROCESS_TEXT_READONLY参数。正确构造Intent的代码示例:val processTextIntent = Intent(Intent.ACTION_PROCESS_TEXT).apply { type = "text/plain" // 可选,但部分应用会判断此参数来决定是否显示 putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, true) }完善AndroidManifest的包可见性配置
即使添加了QUERY_ALL_PACKAGES权限,Android 11+仍建议明确声明针对ACTION_PROCESS_TEXT的查询规则,避免系统过滤。在AndroidManifest.xml中添加:<queries> <intent> <action android:name="android.intent.action.PROCESS_TEXT" /> <data android:mimeType="text/plain" /> </intent> </queries>确认查询代码的Flag设置
使用PackageManager.MATCH_ALLflag来确保获取所有匹配的Activity,避免默认过滤:val matchedActivities = packageManager.queryIntentActivities( processTextIntent, PackageManager.MATCH_ALL )验证设备上存在支持的应用
先确认测试设备上有注册了ACTION_PROCESS_TEXT的应用(比如Google翻译、系统自带的文本处理工具),如果没有这类应用,查询结果自然为空。可以先安装Google翻译来测试。
内容的提问来源于stack exchange,提问作者Savi
相关产品推荐
相关产品推荐

