通过第三方app唤醒自己的app
一 .提供scheme链接在第三方应用Activity中唤醒
- 在自己app中的AndroidManifest.xml文件里包含<action android:name="android.intent.action.MAIN" />的activity标签中添加一个新的intent-filter标签 ,注意data标签里的scheme、host属性,代码如下
<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"/><category android:name="android.intent.category.BROWSABLE"/><data android:host="main.app" android:scheme="sysc"/><!-- 访问链接sysc://main.app?cid=参数 --></intent-filter> </activity>
- 在第三方应用内部就可以用如下方式调用了
String url = "sysc://main.app?key=传递的参数" Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(in);
- 然后在我们的MainActivity中通过如下代码获得参数并做相应处理
//获取其他应用唤醒该app传过来的参数 Intent intent = getIntent(); String scheme = intent.getScheme(); Uri uri = intent.getData(); if (uri != null) {//获得参数值cid = uri.getQueryParameter("cid"); } Log.d(TAG,"scheme="+scheme+",cid="+cid);
二 .提供链接在第三方应用webview页面中唤醒
在Android的webview中本是不支持直接打开本地应用的,所以我们就要自己来处理, 通过在重定向的时候判断是否是普通的网页链接,如果不是则为scheme调用的这种,则我们自己来处理为意图(intent)进行跳转.
具体操作: 在第三方应用的Activity中新建webview并重写其父类的shouldOverrideUrlLoading方法:
public class MainActivity extends AppCompatActivity{private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WebViewClient webViewClient = new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(final WebView view, String url) {if (url.startsWith("http") || url.startsWith("https")) { //http和https协议开头的执行正常的流程return false;} else { //其他的URL则会开启一个Acitity然后去调用原生APPIntent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));if (in.resolveActivity(getPackageManager()) == null) {//说明系统中不存在这个activityview.post(new Runnable() {@Overridepublic void run() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage("应用未安装,是否前往下载页面?");builder.setTitle("提示");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();view.loadUrl("https://www.baidu.com");//此处应改为我们app的下载地址}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}});} else {in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);startActivity(in);}return true;}}};webView = findViewById(R.id.webView);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(webViewClient);webView.loadUrl("file:///android_asset/new_file.html"); //包含跳转链接的html页面}}
布局文件如下
Html页面如下
Html在android项目中的路径
在我们的app中通过如下代码获得参数并做相应处理
@Overrideprotected void onCreate(Bundle savedInstanceState) {
//获取其他应用唤醒该app传过来的参数Intent intent = getIntent();String scheme = intent.getScheme();Uri uri = intent.getData();if (uri != null) {//获得参数值cid = uri.getQueryParameter("cid");}Log.d(TAG,"scheme="+scheme+",cid="+cid);if (!cid.equals("") && "sysc".equals(scheme)){//此处编写处理跳转请求的逻辑}
}
通过第三方app唤醒自己的app相关推荐
- iOS App 唤醒另一个App
iOS App 唤醒另一个App 网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 ...
- android广播唤醒app,Android APP唤醒打开其他APP
App(a):判断是否为App(b)是否存在,不存在选择下载 存在后台状态直接唤醒 否则直接打开 App(a)部分代码 if (checkPackage("com.xxx.android&q ...
- html a标签唤醒app,网页唤醒app、一个app唤醒另一个app
网页唤醒app: 可以通过URL Schemes唤醒某个应用.具体schemes是什么,怎么理解,可自行百度,我觉得可以将它认为是某个应用的身份标识.当然,这个标识可能不是唯一的,因为人们可以自定义它 ...
- uniapp唤醒手机地图app
H5唤醒手机app地图 // latitude longitude 要跳转地址的经纬度,name 要跳转地址的地名 uni.showActionSheet({title: '请选择系统中已安装的地图应 ...
- android强制分屏软件,oppo第三方强制分屏软件app,OPPO第三方强制分屏软件app安卓版预约 v1.0.0-手游汇...
oppo第三方强制分屏软件app是一款专门为oppo手机的用户们提供的助手.安装之后可以享受到永久的免费服务,在任何的情况下都可以按照自己的想法进行,一边看剧一边游戏,为生活带来更多的科技感,所有想要 ...
- 阿里百川V6安全图,uniapp使用阿里百川SDK V6安全图唤醒淘宝APP 阿里百川新版本打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细
阿里百川V6安全图,uniapp使用阿里百川SDK V6安全图唤醒淘宝APP 阿里百川新版本打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细 此文章是针对插件市场1.6版本升级的介绍 ...
- android 退出app代码_PPT 下载 | APP 埋点那些事
本文内容根据神策大数据技术直播系列第一季第二讲<数据采集与埋点>整理而成,可在公众号后台回复[629技术直播],获取 PPT. ▼▼▼ 主持人(刘鑫):来到神策以后参与的一个项目,就是灼洲 ...
- iOS App 签名的原理 App 重签名(三)
目录 iOS App 重签名 - 准备工作 iOS App 重签名 - 手动重签名 iOS App 重签名 - 使用脚本重签名 iOS App 重签名 - 使用 XCode 重签名 注意 iOS Ap ...
- 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术
在开始测试APP之前,应该考虑什么问题?或者如何选择设备?多少部手机测试兼容性最佳? 兼容性测试手机数量:主测手机 1 ,2(根据人员),辅助测试手机:用于兼容性测试.(50-60台最佳,至少5-20 ...
最新文章
- FPGA之道(38)VHDL与Verilog的比较
- 2021云上架构与运维峰会12月10日线上开启,五大精彩看点不容错过
- 5分钟完成业务实时监控系统搭建,是一种什么样的体验?
- activiti搭建
- 拥抱.NET Core系列:依赖注入(2)
- luogu P1659 养猪 dp 好理解
- Qt工作笔记-Qt奇淫技巧把ToolBar改成标题栏
- wannafly-day1 Problem A - Birthday
- IT基础知识(精华版二)
- python拟合二元一次函数
- PTA数据结构-01-复杂度1 最大子列和问题
- MAC读取NTFS移动硬盘方法
- Do we need an operating system?
- 怎么把ppt弄成链接的形式_ppt链接excle表格:如何在ppt中超级链接到指定的excel工作表...
- 【BZOJ4826】【HNOI2017】影魔(线段树)
- VS2017 LINK : fatal error LNK1104: cannot open file ‘atls.lib‘错误解决方案
- android mysql 驱动_Java-使用com.mysql.jdbc.Driver的Android MySQL
- 大学计算机基础python第二次作业_python第二次作业
- rstudio的数据集怎么建立和保存_在R Studio中保存
- 虚拟机 Ubuntu16.04开机蓝屏问题