You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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的界面变化并模拟用户操作。具体流程是:

  1. 你的APP请求用户开启辅助功能权限(需要在APP内引导用户跳转到系统设置开启)。
  2. 当你打开ChatGPT/Gemini后,Accessibility Service监听目标APP的输入框加载完成。
  3. 自动找到输入框的节点,调用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:

  1. 创建Accessibility Service类(安卓原生):
    继承AccessibilityService,重写onAccessibilityEvent方法,监听ChatGPT/Gemini的输入框控件,当控件出现时自动填充文本。
  2. React Native桥接模块
    写一个原生模块,暴露方法给React Native,用于触发打开目标APP并传递提示词,同时让Accessibility Service监听并填充。
  3. 权限引导
    在React Native中引导用户跳转到系统设置,开启你的APP的辅助功能权限。

这个方案的开发成本稍高,但稳定性是目前最高的,也是行业内成熟APP的常用做法。


四、额外注意事项

  • 非官方方案需要你针对不同版本的ChatGPT/Gemini做兼容性测试,比如ChatGPT的URL Scheme在部分旧版本可能不支持。
  • 如果你选择Accessibility Service方案,要严格遵循安卓的辅助功能规范,避免被Google Play判定为恶意APP。
  • 可以在APP中做降级处理:先尝试Deep Link,失败后用Accessibility Service,最后降级到普通打开APP。

如果在测试非官方Scheme或开发Accessibility Service时遇到具体问题,可以再细化提问,我再帮你针对性解决!

火山引擎 最新活动