Android浏览器打开本地app前端同学的两种配置方式Url scheme和Android intent

本文介绍如何在Android应用中实现AppLink功能,包括配置AndroidManifest文件、解析Intent数据及前端链接设置。通过两种不同方式(Urlscheme与Androidintent)实现从网页跳转至应用内指定页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里也有个免费的三方sdk

腾讯的AppLink接入方式

百度的AppLink接入方式

Facebook的AppLink接入方式

google官方文档

更新分割线


首先说一下,在我和前端同学调试时,使用第一种方式配置时,不能够启动本地app,第二种方式能够启动app。可能是手机不支持第一种方式启动,具体原因没找到。


这部分是Android小伙伴要做的事情

唤醒APP

首先两种方式都要在AndroidManifest 里配置

<activity               android:name=".ui.detail.SchemeCenterActivity"          android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:scheme="Myapp"/>
 </intent-filter>
</activity>

然后在Activity里获取

    
  public class SchemeCenterActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent i_getvalue = getIntent();
        String action = i_getvalue.getAction();

        if (Intent.ACTION_VIEW.equals(action)) {

            Uri data = i_getvalue.getData();
            String host = data.getHost();
            Log.i(this,data+"");
            Log.i(this,host+"");//548,后边会提到这个参数是那里传入的
            }
        }

    }

}
   

我这里本身做的跳转到我指定的界面,便于理解简化了,如果有需要,我在最后贴出代码


下边说几个获取的方式

假设用户点击一个链接到http://twitter.com/status/1234

在Activity里可以这么获取

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"

当然了我这里只配置了scheme,因为我没有太多参数要传,这里的scheme 是必须配置的。

如果有需求配置host 可以在data标签下添加这里还按twitter来举例 data标签就变成下边的样子了,
<data android:scheme="http" android:host="twitter.com"/>


下边是前端同学配置的方式

我的问题主要是前端同学使用第一种方式时,我不能启动app
所以我选择了第二种方式

这里说下第一种方式

Url scheme

Url scheme是iOS,Android平台都支持,只需要原生APP开发时注册scheme, 那么用户点击到此类链接时,会自动跳到APP。比如

<!-- 打开twitter -->
<a href="http://twitter.com">打开APP</a>
<!-- 打开我上边的应用 -->
<a href="Myapp://548">打开我的应用</a>

上述的链接,有些手机不支持Scheme所以有了第二种方式


第二种方式

Android intent

这是Android平台独有的,使用方式如下

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

这里的HOST/URI-path, 与普通http URL 的host/path书写方式相同, package是Android app的包名,其它参数如action、category、component就填你AndroidManifest里对应的配置 比如打开我的应用,代码如下

<a href="intent://548#Intent;scheme=CampusLife;package=cn.mytest.app;end">打开APP</a>

最后贴一下我的activity代码给需要的朋友

    
public class SchemeCenterActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent i_getvalue = getIntent();
        String action = i_getvalue.getAction();

        if (Intent.ACTION_VIEW.equals(action)) {

            Uri data = i_getvalue.getData();

            if (data != null) {

                String host = data.getHost();
                Intent intent = new Intent(this, DetailActivity.class);
                intent.putExtra(DetailActivity.EXTRA_ID, host);
                startActivity(intent);
                finish();
            }
        }

    }

}
   

我这里是将获取的548传给我的下一个界面DetailActivity 就可以了所以没有配置其他的。


希望这篇能够给移动端/前端小伙伴在配合时提供帮助。

如果哪里表述的不清楚,希望大家指出来,大家共同进步。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy丶code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值