【问题标题】:StartActivityForResult from browser来自浏览器的 StartActivityForResult
【发布时间】:2016-10-11 08:47:38
【问题描述】:

在 Android 中,如果您想启动一个活动并让该活动返回一个结果,您可以执行以下操作:

Intent intent = new Intent(this, DisplayMessageActivity.class);
startActivityForResult(intent);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    ....
}

如果您希望一个活动从浏览器启动,您可以编写如下 HTML:

<a href="intent://HOST/#Intent;scheme=SCHEME;package=com.example.package;end"> Link </a>

问题

您能否从浏览器启动一个活动并让该活动向浏览器返回结果?

我不认为这是可能的,但如果有人有任何想法,请告诉我。如果您有解释如何执行此操作的来源,我很乐意制作 POC 并报告我的发现。

【问题讨论】:

    标签: android android-intent browser


    【解决方案1】:

    基本上不可能

    因为以下问题不清楚。

    1. 您将如何处理结果。
    2. 您在哪里处理结果。

    【讨论】:

    • Android 浏览器可能会启动 activityForResult,然后调用您以某种方式使用该结果注册的 Javascript 函数。从技术上讲,浏览器可以做类似的事情。
    【解决方案2】:

    无法从浏览器启动ActivityForResult。

    根据 chrome 开发者指南,基于意图的 URI 的基本语法如下:

    intent:
       HOST/URI-path // Optional host 
       #Intent; 
          package=[string]; 
          action=[string]; 
          category=[string]; 
          component=[string]; 
          scheme=[string]; 
       end;
    

    它没有提供任何回调参数,可以在其中获取回调,所以不可行。

    更多详情请访问https://developer.chrome.com/multidevice/android/intents

    【讨论】:

      【解决方案3】:

      这是不可能的(正如其他人所说)。但是,您可以让您的Activity 在浏览器中启动一个 URL,然后可以显示“结果”。这将是让您的Activity“返回结果”给浏览器的一种方式。启动的 URL 可以是静态 HTML 页面,也可以是一些 JavaScript 代码等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-15
        • 2017-10-22
        • 1970-01-01
        • 1970-01-01
        • 2017-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多