React Native安卓应用实现向ChatGPT/Gemini自动预填AI提示词的技术方案问询
React Native安卓应用实现向ChatGPT/Gemini自动预填AI提示词的技术方案问询
我来帮你梳理下实现这个需求的可行方向,结合你提到的尝试和行业里的常见做法,给你拆解下核心问题和解决方案:
一、针对你的四个核心问题的直接解答
1. 是否有ChatGPT/Gemini支持的特定Intent Action或Deep Link用于预填文本?
官方并未公开专门用于预填提示词的Intent或Deep Link,但社区开发者通过逆向和测试,找到了一些非官方的可用方案:
- ChatGPT:支持
chatgpt://这个URL Scheme,比如chatgpt://new-chat?prompt=你的提示词,部分版本可以直接打开新聊天并预填内容。 - Google Gemini(原Bard):可以用网页Deep Link
https://gemini.google.com/app?prompt=你的提示词,通过安卓的App Links机制,会自动跳转到Gemini APP并尝试预填提示词。
2. 这些APP是否有未公开的URL Scheme或Intent Extras?
是的,社区里有不少非公开的发现:
- ChatGPT的Intent可以尝试添加
S.prompt这个extra参数,比如:intent:#Intent;action=android.intent.action.VIEW;package=com.openai.chatgpt;S.prompt=${encodeURIComponent(prompt)};end - Gemini的旧版(Bard)曾支持
com.google.android.apps.bard.action.SEND_PROMPT这个Intent Action,但新版可能已调整,需要测试。
⚠️ 注意:这些非官方方案没有官方维护,APP版本更新后可能突然失效,需要你定期验证兼容性。
3. 是否有其他安卓API(比如Accessibility Service)可以实现?
这是目前第三方APP(比如你提到的提示词管理APP)最常用的稳定方案!
Accessibility Service是安卓提供的系统级API,允许APP在用户授权后,监听其他APP的界面变化并模拟用户操作。具体流程是:
- 你的APP请求用户开启辅助功能权限(需要在APP内引导用户跳转到系统设置开启)。
- 当你打开ChatGPT/Gemini后,Accessibility Service监听目标APP的输入框加载完成。
- 自动找到输入框的节点,调用
ACTION_SET_TEXT方法将提示词填充进去。
这个方案的优势是稳定性高,不受APP版本更新的影响(只要输入框的控件ID或特征不发生大变化),缺点是需要用户授权辅助功能,有一定的使用门槛。
4. OpenAI/Google是否有官方API或文档化方法?
目前没有!OpenAI的官方API都是用于直接调用ChatGPT模型生成内容(比如Chat Completions API),Google的Gemini API也是同理——它们都是云端接口,不涉及操作本地APP界面的能力。官方并未提供打开APP并预填提示词的官方方案。
二、可直接测试的React Native代码示例
1. 尝试ChatGPT的非官方Deep Link方案
import { Linking, Platform } from 'react-native'; const sendPromptToChatGPT = async (prompt) => { if (Platform.OS !== 'android') return; const encodedPrompt = encodeURIComponent(prompt); // 优先尝试ChatGPT的URL Scheme const deepLink = `chatgpt://new-chat?prompt=${encodedPrompt}`; try { const isSupported = await Linking.canOpenURL(deepLink); if (isSupported) { await Linking.openURL(deepLink); } else { // fallback到Intent方式,指定包名确保跳转到ChatGPT const intentUrl = `intent:#Intent;action=android.intent.action.VIEW;package=com.openai.chatgpt;S.prompt=${encodedPrompt};end`; await Linking.openURL(intentUrl); } } catch (error) { console.error('发送到ChatGPT失败:', error); // 失败时可以降级到普通打开APP await Linking.openURL('market://launch?id=com.openai.chatgpt'); } };
2. 尝试Google Gemini的方案
const sendPromptToGemini = async (prompt) => { if (Platform.OS !== 'android') return; const encodedPrompt = encodeURIComponent(prompt); // 用网页Deep Link触发App Links跳转 const deepLink = `https://gemini.google.com/app?prompt=${encodedPrompt}`; try { await Linking.openURL(deepLink); } catch (error) { console.error('发送到Gemini失败:', error); // 降级方案 await Linking.openURL('market://launch?id=com.google.android.apps.bard'); } };
三、稳定方案:基于Accessibility Service的原生模块实现
如果非官方Deep Link失效,Accessibility Service是最可靠的替代方案,需要你写一点安卓原生代码配合React Native:
- 创建Accessibility Service类(安卓原生):
继承AccessibilityService,重写onAccessibilityEvent方法,监听ChatGPT/Gemini的输入框控件,当控件出现时自动填充文本。 - React Native桥接模块:
写一个原生模块,暴露方法给React Native,用于触发打开目标APP并传递提示词,同时让Accessibility Service监听并填充。 - 权限引导:
在React Native中引导用户跳转到系统设置,开启你的APP的辅助功能权限。
这个方案的开发成本稍高,但稳定性是目前最高的,也是行业内成熟APP的常用做法。
四、额外注意事项
- 非官方方案需要你针对不同版本的ChatGPT/Gemini做兼容性测试,比如ChatGPT的URL Scheme在部分旧版本可能不支持。
- 如果你选择Accessibility Service方案,要严格遵循安卓的辅助功能规范,避免被Google Play判定为恶意APP。
- 可以在APP中做降级处理:先尝试Deep Link,失败后用Accessibility Service,最后降级到普通打开APP。
如果在测试非官方Scheme或开发Accessibility Service时遇到具体问题,可以再细化提问,我再帮你针对性解决!




