当前位置: 首页 > 知识库问答 >
问题:

使用uri schme和返回值的Android应用到应用

傅朝
2023-03-14

在Android中,我试图通过虚拟应用程序的uri方案从我的应用程序中调用另一个虚拟应用程序。

在虚拟应用程序中,当用户点击一个按钮时,我想用一个返回值返回到我的应用程序。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />

    <data
                android:scheme="myapp"
                android:host="my-poc-application.com"
                android:pathPrefix="/id" />
</intent-filter>
String scheme = "myapp";
String host = "my-poc-application.com";
String id = "8";
Uri uri = Uri.parse(scheme + "://" + host + "/" + id);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

// Verify it resolves
PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;

// Start an activity if it's safe
if (isIntentSafe) {
   startActivityForResult(intent, 1);
}

但没有调用虚拟应用程序。

共有1个答案

羊昊苍
2023-03-14

以下是我的尝试:

在目标应用程序的活动中注册意图过滤器:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data
                    android:scheme="target-app"
                    android:host="target-app.com" />
            </intent-filter>

        </activity>

注意:您不需要pathPrefix

btnGoBack.setOnClickListener{
            val resultIntent = Intent()
            resultIntent.putExtra("Result", "I am the result from target app")
            setResult(1000, resultIntent)
            finish()
        }

//Read the id you sent while calling this app
            val uri = intent.data
            Toast.makeText(this, uri?.path.toString(), Toast.LENGTH_SHORT).show()
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btnOpen.setOnClickListener{
            val scheme = "target-app"
            val host = "target-app.com"
            val id = "8"
            val uri = Uri.parse("$scheme://$host/$id")
            val intent = Intent(Intent.ACTION_VIEW, uri)

            // Verify it resolves
            val activities = packageManager.queryIntentActivities(intent, 0)
            val isIntentSafe = activities.size > 0

            // Start an activity if it's safe
            if (isIntentSafe) {
                startActivityForResult(intent, 1)
            }
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == 1000){
            Toast.makeText(this, data?.getStringExtra("Result"), Toast.LENGTH_SHORT).show()
        }
    }

该活动有一个名为BTnOpen的按钮。

OnActivityResult中,我们获得从目标应用程序发送的结果。

这段代码是kotlin的,将其转换为java应该是微不足道的。

普里亚布拉塔

 类似资料:
  • 我已经为我的浏览器游戏创建了一个AndroidWebView应用程序。我使用Javascript警报询问用户是否真的想要重置分数。但是我想使用Android警报而不是Javascript警报。所以我创建了一个Javascript接口。 现在我需要Javascript中Android警报的返回值。问题是Android警报有一个ClickListener。但是如何获取值并将其返回到Javascript

  • 我通常使用getBoundingClientRect()。宽度当开发一个Swiper组件使用反应挂钩,但在一些例子getBoundingClientRect()。宽度返回0。 我在useEffect函数中使用了setTimeout,效果很好; 下面是简单的swiper代码演示: 简单swiper演示代码

  • 问题内容: 我正在尝试使用Python Pandas查找具有 最大值的Country&。Place 这将返回最大值: 但我怎么得到相应Country和Place的名字吗? 问题答案: 假设有一个唯一的索引,则该行具有最大值: 请注意,返回索引标签。因此,如果在索引中有重复项,则标签可能不会唯一地 标识行,因此可能会返回多个行。 因此,如果没有唯一索引,则必须按照上述步骤使索引唯一。取决于,有时您可

  • 我有一个应用程序具有这种转换: 输入后,我必须检查一个标志。然后我必须将其作为意图(让我们说)传递给。在中做了一些事情后,它会在按下按钮后返回。我所做的只是再次传递值为true的,然后再次启动活动C。所以发生的是它创建了另一个活动C。 我想做的是,我不必启动一个新的活动C,只需调用super即可使用以前的C。onBackPressed()。但我无法传递intentX的新值。有没有其他方法来实现我想

  • 我有一个非常令人沮丧的问题。我正在使用Android摄像头启动摄像头并录制视频。 我期望的是:当我按stop时,我想通过onActivityResult返回我的应用程序活动,以执行一些操作,例如显示视频录制的拇指图像等。 发生的情况:当我按下stop时,屏幕会闪烁,好像回到应用程序,但随后会继续显示摄像头。我在ActivityResult中放了一个日志,它再也不会回这里了!请注意,这不是inten

  • 我需要从从 Rest Assured 建模请求返回的 JSON 响应数据中获取两个值: 这抛出和 获取这些的正确、最好的方法是什么?我知道我可以链接关闭请求,但不确定如何获取