Android浏览器打开本地app前端同学的两种配置方式Url scheme和Android intent
来源:互联网 发布:美工做好图怎么上传 编辑:程序博客网 时间:2024/06/03 09:10
这里也有个免费的三方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
就可以了所以没有配置其他的。
希望这篇能够给移动端/前端小伙伴在配合时提供帮助。
如果哪里表述的不清楚,希望大家指出来,大家共同进步。
- Android浏览器打开本地app前端同学的两种配置方式Url scheme和Android intent
- android 主流浏览器对 scheme 打开本地 APP 功能的兼容性
- Android 利用发送Intent播放本地视频和网络视频(浏览器打开这个URL)
- Android scheme的使用--解决浏览器打开app的问题
- Android 浏览器打开本地app
- android url scheme 通过浏览器调用本地app应用 调用不了
- Android 打开另一个app的两种方式
- Android 打开其他应用app的两种方式
- Android打开其它APP的两种方式
- Android自定义URL使用Scheme方式唤起Activity或App
- Android自定义URL使用Scheme方式唤起Activity或App
- Android自定义URL使用Scheme方式唤起Activity或App
- android 通过浏览器url打开app的设置方法
- android Intent打开URL链接(动态打开浏览器网页)
- Android安全之Intent Scheme Url攻击
- Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数
- Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数
- Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数
- javascript 属性的特性 二十五
- setTimeout延时0毫秒的作用
- TabLayout + ViewPager实现标签栏效果
- UVA 1099 Sharing Chocolate(记忆化搜索)
- 程序员在上海之一
- Android浏览器打开本地app前端同学的两种配置方式Url scheme和Android intent
- 对于继承的笔记
- Unity3D 5.x 启动过程中 License Error 解决办法
- Imageview设置宽高充满父容器(屏幕)
- iOS之UIScrollView
- (笔记)Spring实战_面向切面的Spring(4)_注解切面
- go命令中的三个点含义
- 第五周项目二(3)发工资
- 树链剖分水题I