从浏览器重定向到 Android 应用程序 - 在发布应用程序之前

Posted

技术标签:

【中文标题】从浏览器重定向到 Android 应用程序 - 在发布应用程序之前【英文标题】:Redirect to Android App from browser - before publishing app 【发布时间】:2020-03-16 00:32:21 【问题描述】:

我按照here 的指示操作,了解如何使浏览器到应用程序重定向正常工作,但似乎无论我做什么,我都会被引导至 Play 商店应用程序,并显示“找不到项目”。-屏幕.

我尝试在我正在使用的开发平板电脑上安装该应用程序,希望当我启动调试应用程序时,转到一个网站并忘记调试应用程序,我会被引导回已安装的应用程序.

我希望能够在发布之前重定向到应用程序的原因是,我可以确保通过浏览器使用单独网站的多因素身份验证功能按预期工作。 MFA 功能是应用程序存在的部分原因,因为它在很大程度上是所述 MFA 系统的演示。

我正在尝试的可能吗?

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.appname">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".ui.login.LoginActivity"
            android:label="@string/app_name">
        <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.BROWSABLE" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="customscheme"/>
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

尝试重定向回应用程序是:

intent:#Intent;scheme=customscheme;package=company.appname;end

我还注意到logcat的登录:

2019-11-20 10:57:55.828 25127-25233/? E/Volley: [692] bln.a: Unexpected response code 404 for https://android.clients.google.com/fdfe/details?doc=company.appname&nocache_irl=true

【问题讨论】:

【参考方案1】:

使用此配置:

<intent-filter>
 <action android:name="android.intent.action.VIEW"></action>
 <category android:name="android.intent.category.DEFAULT"></category>
 <category android:name="android.intent.category.BROWSABLE"></category>
 <data
   android:host="my.app.com"
   android:path="launch"
   android:scheme="http">
 </data>
</intent-filter>

当你点击http://my.app.com/launch时,系统会提示用户是用应用打开还是用浏览器打开。

有关意图的更多信息,请阅读this

【讨论】:

感谢您的回答。你建议把什么放在主机上?你想对包名做什么?将包名称放在主机字段中似乎无法解决问题。 请参考上面的intent-filter。因此,每当您点击my.app.com/launch 时,您的应用程序就会打开。您可以根据需要更改这些值。 在这种情况下,你会在浏览器中调用什么来重定向到应用程序? 我之所以这么问,是因为我不确定我是否理解您的意图,这与另一个线程中发布的标准解决方案不同。 感谢@user392117 的编辑。对于可能来到这里的任何其他人,答案是您确实无法使用意图系统打开未发布的应用程序(除非您以某种方式覆盖播放商店查找)在您发布之前,您可以使用中概述的网络链接方法答案。

以上是关于从浏览器重定向到 Android 应用程序 - 在发布应用程序之前的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Cognito:从浏览器重定向到 Android 应用程序时如何停止出现“redirect_mismatch”错误

将网站从 facebook 网络浏览器重定向到手机的默认浏览器

如果已安装,则将用户从 iOS 浏览器重定向到 App,如果未安装,则将用户重定向到 App Store - 像 Yelp

Cakephp 内部从控制器重定向到另一个控制器

如何让 pycharm 确认从移动应用程序到移动浏览器的重定向已完成?

从本地驱动器重定向到服务器