通过 Chrome 的自定义选项卡发布数据

2024-02-20

我想通过 CustomTab 或 Chrome 发送 POST HTTP 请求,然后最终显示页面。我进行了很多研究,但没有办法。 有办法吗? 可以通过 Volley 发送 POST 请求然后最终在浏览器中显示响应吗?


我为此写了一个解决方法。

小心,很脏;)

Steps:

  • 你需要创建一个 html 文件,其中包含一个表单
  • 添加对应于您需要传递给您的网址的值的输入字段
  • 将此文件添加到您的资产文件夹中
  • on android code:
    • 读取文件内容
    • 将内容保存到外部缓存目录
    • >>这一步是基础从现在开始,请按照这些说明进行操作(@Skotos 关于如何使用自定义选项卡意图打开本地 html 的回答https://stackoverflow.com/a/60078339/2124387 https://stackoverflow.com/a/60078339/2124387)

Example:

这是我的 html 文件,名为form_template.html在资产文件夹中:

    <html>
        <script>
            function submitForm() {
                document.getElementById("form").submit()
            }
        </script>

        <body onload="submitForm()">
            <form id="form" action="{{url}}" method="{{method}}" enctype="{{enctype}}">
                {{fields}}
            </form>
        </body>
    </html>

这就是我动态传递 url 和值的方式

    Map<String, String> values = ImmutableMap.of(
        "fooKey", "fooValue", // whatever you
        "barKey", "barValue"  // need here
    );

    try {
        File redirect = new File(activity.getExternalCacheDir(), "redirect.html");

        // To get string from input stream look at here https://stackoverflow.com/a/16110044/2124387
        String templateString = getStringFromInputStream(activity.getAssets().open("form_template.html"));

        List<String> inputFields = new ArrayList<>();
        for (String key : values.keySet()) {
            inputFields.add(String.format("<input type=\"hidden\" name=\"%s\" value=\"%s\" />", key, values.get(key)));
        }

        templateString = templateString.replace("{{url}}", url);
        templateString = templateString.replace("{{method}}", method); // eg. "POST"
        templateString = templateString.replace("{{enctype}}", encodeType); // eg. "application/x-www-form-urlencoded"
        templateString = templateString.replace("{{fields}}", StringUtil.join("\n", inputFields));

        FileOutputStream fileOutputStream = new FileOutputStream(redirect);
        fileOutputStream.write(templateString.getBytes());
        Uri uri = FileProvider.getUriForFile(activity, BuildConfig.ApplicationId + ".provider", redirect);
        new Handler().postDelayed(redirect::delete, 5000);

        CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
        CustomTabsIntent customTabsIntent = builder.build();
        customTabsIntent.intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION))
        customTabsIntent.launchUrl(this, packageName, url);
    } catch (IOException e) {
        e.printStackTrace();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Chrome 的自定义选项卡发布数据 的相关文章

  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • 我可以在运行时指定maven project.artifactId吗?

    我有一个 Maven POM 我想将其用作模板 根据我传递给它的参数生成具有不同名称的工件 但我不知道如何在运行时指定artifactId 如果我参数化
  • 用于 python 3.X 的 OpenCV

    有谁知道我是否可以在 python 3 X 中使用 OpenCV 库 或者我应该坚持使用scikit image用于物体识别之类的任务 我想尝试一下 openCV 但去年决定从 2 7 开始切换 我在这里搜索了数据包 http www lf
  • Java 中的 Windows 7 任务栏进度条

    我想知道是否可以像Windows资源管理器那样在进行文件操作时在任务栏上显示进度条 我看到很多例子 但都是C 的 SWT 不会削减它 我发现这个功能包含在Java 9 它是一部分AWT而且使用起来非常简单 这是一个简短的例子 import
  • 使用 Pandoc 和 Markdown 时出现紧密列表错误

    我在 Mac OS 10 12 上使用 pandoc v 1 18 将此 Markdown 文件转换为 pdf 使用简单的命令行 A list that does not work one two three 我收到此错误 Undefine
  • 使用 R 扩展时 NetLogo BehaviourSpace 崩溃

    我正在我的机器上运行动物饲养场的模型 我已将 R 扩展添加到 NetLogo 代码中 以计算每个家庭范围的最小凸多边形 当我在多个内核上的BehaviorSpace 中运行模型时 NetLogo 将在几个时间步骤后消失 即停止运行 我在 5
  • Visual Studio Code 中 Spring Boot 的热插拔

    我刚刚使用 Angular 4 启动了一个 Spring Boot 项目 对于 Angular 我可以运行npm start以便 NPM 编译每个更改 但我不知道如何为 Spring Boot 做到这一点 我可以找到一些 Eclipse I
  • Woocommerce 添加到购物车按钮重定向到结帐

    我使用插件 woocommerce 创建了一个电子商务 我只出售订阅 因此 cart 页面毫无用处 我正在尝试摆脱它 以便当我的客户单击 添加到购物车 按钮时 他最终会进入结帐页面 在 WooCommerce 3 6 或更高版本中 您可以使
  • 杰青 |更新由`select`选择的数组元素

    在 JSON 数组中 我想根据节点的值选择一个数组元素 然后更新同一数组元素中的不同节点 例如 在下面的 JSON 中 apiVersion vlabs properties orchestratorProfile orchestrator
  • 如何在屏幕旋转后禁用/避免片段自定义动画

    我刚刚发现 每次在片段上 setRetainInstance true 时 它都会按预期工作 保留片段数据 但这会导致片段的自定义动画在屏幕旋转后再次执行 有没有办法避免 禁用屏幕旋转时的这些动画 该片段是使用以下动画创建的 setCust
  • 如何放置我的网页以便我可以在谷歌搜索中找到我的页面? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何上传我的网页以便我可以在 Google 搜索中找到我的网页 搜索引擎优化可能是一个耗时的过程 但其中有几个因素 您的网站应该具有良好的关键字丰富的
  • 在Python中将命名列表向量从R翻译成rpy2?

    python 中的 Rpy2 中的以下 R 代码相当于什么 Var1 c navy darkgreen names Var1 c Class1 Class2 ann colors list Var1 Var1 目前尚不清楚是什么ann co
  • php ssh2_exec 不执行“su”命令

    我在 php 的 ssh2 中获得了很多乐趣 我正在通过 ssh ing 进入 localhost 运行 ubuntu 进行测试 我已经成功地使用我的用户名 而不是 root 进行连接和身份验证 并且一些命令 例如 ls 返回一些信息 这是
  • 单击 iAd 时暂停 SpriteKit 场景

    我正在研究一个SpriteKit项目 我正在努力在点击 iAd 时暂停游戏 并在点击 iAd 时取消暂停iAd被解雇 主要问题是从 ViewController 暂停场景 我知道如果我想从 ViewController 暂停场景Scene
  • 使用子进程时如何限制程序的执行时间?

    我想使用子进程来运行程序 并且需要限制执行时间 例如 如果它运行超过2秒我想杀死它 对于普通程序 kill 效果很好 但如果我尝试跑步 usr bin time something kill 并不能真正杀死程序 我下面的代码似乎不能很好地工
  • 谷歌表格。如何获取实际范围大小(以像素为单位)

    我的脚本将选定的范围转换为图像 请参见 https docs google com spreadsheets d 1qNQ6iCMoBCQgJzBB63ymtBQ6BedXZFhjgZZKGItjeVA copy 它首先创建一个公共 PDF
  • 远离 CSS 的抽象

    许多框架试图从 HTML 自定义标签 JSF 组件系统 中抽象出来 以便更轻松地处理特定的问题 你们使用过的东西中是否有类似的 CSS 概念 它可以为你带来很多跨浏览器的魔力 支持类似的变量 为什么我每次想要那种颜色时都必须输入 3c5c8
  • 用点或连字符填充标签之间的可用空间

    我有一个带有标签的页面 这些标签包含在 div 中 标签有一个变量 我想用字符 点或 填充两者之间的空格 例如 我的标签文本 1 这里有一些文本 我的文字2 另一篇文字 如果您发现两个文本都是合理的 或者至少我尝试过 则可能是字符计数问题
  • Android 7 中的 ContextMenu 位置混乱

    我有一个应用程序 其中有一个简单的列表视图和上下文菜单 Android 7 之前的版本 一切看起来都正常 when clicking an item at the bottom of the list when clicking an it
  • 这些奇怪的环境变量是什么?

    I use GetEnvironmentString 获取程序的环境变量 每个程序的第一个结果都是这样的 我不知道这是什么意思 这是代码 LPWCH lpEnvString GetEnvironmentStringsW LPWSTR lps
  • 通过 Chrome 的自定义选项卡发布数据

    我想通过 CustomTab 或 Chrome 发送 POST HTTP 请求 然后最终显示页面 我进行了很多研究 但没有办法 有办法吗 可以通过 Volley 发送 POST 请求然后最终在浏览器中显示响应吗 我为此写了一个解决方法 小心