Android外部调起App方案
背景
日常使用场景中经常需要从app外部唤起app,比如短信链接,浏览器页面点击按钮等。传统的方式都可以使用android系统自带的拦截url ,也就是schema方式,但这种方式在拦截生效时会弹出所有可以处理此连接的app出来供用户选择,如果用户没有选择我们的app,那么这个唤起也就不成功。现在市面上有很多成熟的方案,目前美菜商城采用的是极光魔链sdk来处理。
极光魔链sdk使用
可以参考极光魔链接入方式 极光魔链 - JMLink 产品简介 - 极光文档
商城接入
接入依赖
//极光魔链
implementation(rootProject.ext.dependencies["jmlink"]) {
exclude group: 'com.tencent.mm.opensdk'
}
配置入口
<activity
android:name=".welcome.act.WelComeActivity"
android:enabled="true"
android:icon="@drawable/app_launch_icon"
android:label="${label_name}"
android:screenOrientation="portrait"
android:theme="@style/LauncherAppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<!-- 为微信打开APP提供入口 -->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="wxb75d18e8d4f35a2a" />
</intent-filter>
<intent-filter>
<!-- 为H5打开APP提供入口 -->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="meicaistore" />
</intent-filter>
</activity>
极光魔链平台设置app
代码初始化
...
private static final String TASK_MW_INIT = "TASK_MW_Init";//魔窗
private static final String TASK_JM_LINK = "Task_Jm_Link";//极光魔链
...
case TASK_MW_INIT:
return new Task(TASK_MW_INIT, false) {
@Override
public void run() {
MainApp.getInstance().getUserPrefs().deepLinkUrl().set("");
registerForMLinkCallback();
if (uri != null) {
redirectUri(uri);
} else {
JMLinkAPI.getInstance().replay(new MyReplayCallback(mContext));
}
}
};
case TASK_JM_LINK:
return new Task(TASK_JM_LINK, false) {
@Override
public void run() {
//极光魔链SDK从浏览器直接转跳到APP具体页面
JMLinkAPI.getInstance().setDebugMode(BuildConfig.TEST_ENTRY);
JMLinkAPI.getInstance().init(mContext.getApplicationContext());
}
};
...
private void registerForMLinkCallback() {
JMLinkAPI.getInstance().registerDefault((map, uri) -> {
if (uri != null) {
LogUtils.e("===jmlink=execute==" + uri.toString());
redirectUri(uri);
}
});
}
/**
* scheme及魔窗短链启动APP指定页面
*
* @param uri intent data
*/
private void redirectUri(Uri uri) {
LogUtils.e("===jmlink===" + uri.toString());
//取出短链中的url,url的value需要encode
String routerUrl = uri.getQueryParameter("url");
if (!TextUtils.isEmpty(routerUrl)) {
LogUtils.e("===jmlink===" + routerUrl);
MainApp.getInstance().getUserPrefs().deepLinkUrl().set(URLDecoder.decode(routerUrl));
} else {
MainApp.getInstance().getUserPrefs().deepLinkUrl().set("");
}
}
...
public void unregisterJMLink() {
JMLinkAPI.getInstance().unregisterDefault();
}
- 魔链设置
可以在平台上设备短链接
具体操作可以参考极光魔链接入方式 中接入指南一项 极光魔链 - JMLink 产品简介 - 极光文档
Android外部调起App方案相关推荐
- Android 外部调起高德地图显示坐标点 自定义 标注高德地图 by Terry
下载链接: 点击下载demo 在App开发中,经常想在高德地图上标注我们想要的坐标点.其实这个动作很简单,但是,高德地图API开发文档把这一块藏得太隐蔽了.不太好找. 就几行代码. Intent i ...
- Android外部唤醒APP跳转指定页面
Android外部链接唤醒APP 原理 两个新创的activity H5OpenAppActivity源码 EventJumpActivity 原理 通过scheme协议来唤醒APP. 一.定义一个能 ...
- Android中点击链接调起App
最近工作中的一个需求是点击短信链接则调起App然后完成相关功能逻辑,查阅相关文章完成需求,以此文章来记录Android中点击链接吊起App的实现. 原理 通过使用自定义Scheme方式,修改Schem ...
- android智能机顶盒的ota设计,智能机顶盒APP方案开发,让生活更有趣!
原标题:智能机顶盒APP方案开发,让生活更有趣! 目前的有线存量机顶盒配置低.支撑业务比较少.用户体验也非常差,只能满足基本的看电视需求,并不支持新业务形态,也很难进行新业务拓展,面临用之无味.弃之可 ...
- android重复拉起app首页_Android进程管理:Framework层概念
前情回顾 RickAi,公众号:安卓尖端技术研究Android进程管理:从Kernel到LowMemoryKiller 上一篇文章从Native角度讲解了Android进程管理的相关概念,本文将继续从 ...
- 基于Small及Weex的定制化APP方案
前言 small是android与iOS平台比较出名的轻巧的跨平台插件化框架,也正是被这一点吸引,决定将small应用到集团内部的应用引擎模块化方案中,本篇博文主要讲述本人基于small在androi ...
- ios和android测试面试题目,App测试面试题总结
前言 现在面试个测试岗位,都是要求全能的,web.接口.app啥都要会测,那么APP测试一般需要哪些技能呢? 面试app测试岗位会被问到哪些问题,怎样让面试管觉得你对APP测试很精通的样子? 本篇总结 ...
- Android APK加壳技术方案----代码实现
本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/8746917 作者:Jack_Jia 邮 ...
- Android性能调优篇之探索垃圾回收机制
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...
最新文章
- Spring 配置文件的差异
- 初试Android基于Vuforia开发AR
- python standard lib_跟Python Standard Library混个脸熟(一)
- Winform中实现读取xml配置文件并动态配置DevExpress的RadioGroup的选项
- excel中match函数_Excel函数轻松学02:详解Excel函数中的数据类型
- openwrt开发环境搭建
- 《vue+vant 文本超出两行部分省略号显示》
- yii2通过url访问类中的方法_行为型设计模式 访问者模式
- 赞!卷积神经网络中十大拍案叫绝的操作
- (1)webpack介绍
- 真心干货:一起学习阿里巴巴数据中台实践!首次公开!
- 三菱PLC排故障的方法
- 小米路由器4A千兆版c341编程器刷breed.bin详细教程
- python 钉钉导出Excel考勤统计
- 如何创建水晶报表模板
- 将MongoDB安装在移动硬盘
- weka分类器怎么设置样本类别_NeurIPS 2020 | 港中文MMLab自步对比学习: 充分挖掘无监督学习样本...
- Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“(已解决)
- c++ 多边形求交集代码(凸多边形与凸多边形交集)
- win10系统查看组件服务器,win10系统查看邮箱服务器信息的技巧介绍