记录下,当别人要求唤起某个应用,但没提供太多信息(除了应用名称之外)的情况下,可能会用的上。

第一步,查看包名和Scheme,需要下载对应App的apk,ipa。
        Android:解压apk,找出AndroidManifest.xml文件。使用AXMLPrinter2.jar对xml文件进行反编译。(环境要求:能运行java命令,在网上下载AXMLPrinter2.jar)
        编译命令:

java -jar AXMLPrinter2.jar AndroidManifest.xml > main.txt

运行完毕后得到的main.txt里就是反编译后的明文xml。在其中找schemepackage就行;其中scheme可能有多个,你需要逐个去试下能不能唤起对应应用的期望界面;(按经验来说,含有“notification”字样的scheme大多符合唤起界面的要求)

IOS:将ipa移至macbook上,把后缀名改成zip,利用归档工具解压;点进去,有个“显示包内容”选项,里面找到info.plist文件;URL Types里找对应的URL Scheme就行;包名的话,就找“CFBundleIdentifier”这个字段对应的值;

第二步,编写唤起代码。(例子:包名:com.aaa.bbb;scheme:xxx)

Android应用: 根据包名唤起的方法:openAppcation("com.aaa.bbb");

    public static boolean openAppcation(String packname){try {PackageManager packageManager = mContext.getPackageManager();Intent intent = new Intent();intent = packageManager.getLaunchIntentForPackage(packname);if (intent != null) {mContext.startActivity(Intent.createChooser(intent, ""));return true;}} catch (Exception e) {e.printStackTrace();}return false;}

根据scheme唤起:

    public static void openXXX() {try {PackageManager packageManager = mContext.getPackageManager();Intent intent = new Intent();intent = packageManager.getLaunchIntentForPackage("com.aaa.bbb");if (intent == null) {//Toast提示之类("请安装XXX客户端");} else {mContext.startActivity(Intent.createChooser(intent, ""));}} catch (Exception e) {e.printStackTrace();}}

手机网页:根据scheme唤起:(TS版)

window.open("xxx://");

IOS内应用:根据包名唤起:[openAppcation:@"com.aaa.bbb"];

#import <objc/runtime.h> //objc_getClass 用到//唤起应用
+(NSString *)openAppcation:(NSString *)packname{Class lsawsc = objc_getClass("LSApplicationWorkspace");NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];// iOS6 没有defaultWorkspaceif ([workspace respondsToSelector:NSSelectorFromString(@"openApplicationWithBundleID:")]){[workspace performSelector:NSSelectorFromString(@"openApplicationWithBundleID:") withObject:packname];return @"1";}//0 失败 1 成功 2其他平台默认return @"0";
}

根据URL Scheme唤起:

//打开XXX
+(void) openXXX:(NSString *)num{if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"xxx://"]]) {NSURL *url1 = [NSURL URLWithString:@"xxx://"];[[UIApplication sharedApplication] openURL:url1 options:@{} completionHandler:^(BOOL success) {if(success)NSLog(@"open xxx successed");else{NSLog(@"open xxx failed");}}];}else{NSLog(@"open xxx failed");//或者跳到APPSTORE里下载该应用//[XXX jumpAppStoreDL:@"该应用的appid"];}
}//跳转app store 下载应用
+(void) jumpAppStoreDL:(NSString *)appid{NSString *url = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appid];//应用 在App Store的 app IDNSURL *url2 = [NSURL URLWithString:url];if (@available(iOS 10.0, *)){[[UIApplication sharedApplication]openURL:url2 options:@{UIApplicationOpenURLOptionsSourceApplicationKey:@YES} completionHandler:^(BOOL success) {if (success) {NSLog(@"10以后可以跳转 App Store下应用 id:%@",appid);}else{NSLog(@"10以后不可以跳转App Store下应用 id:%@",appid);}}];}else{BOOL success = [[UIApplication sharedApplication]openURL:url2];if (success) {NSLog(@"10以前可以跳转 App Store下应用 id:%@",appid);}else{NSLog(@"10以前不可以跳转 App Store 下应用 id:%@",appid);}}
}

并且还要在你应用的Info.plist里白名单(LSApplicationQueriesSchemes)加上它的URL Scheme。

 <key>LSApplicationQueriesSchemes</key><array><string>xxx</string><string>itms-apps</string><string>weixinULAPI</string><string>weixin</string><string>wechat</string><string>mqq</string><string>mqqwpa</string><string>mqzone</string><string>mqqapi</string><string>mqqopensdkapiv2</string><string>mqqopensdkapiV3</string><string>mqqopensdkapiV4</string><string>mqzoneopensdk</string><string>mqzoneopensdkapiV2</string><string>mqqopensdkminiapp</string><string>mqzoneopensdkapi19</string><string>mqzoneopensdkapi</string><string>mqqOpensdkSSoLogin</string></array>

至此,记录完毕。

【不求人】手机端内应用或网页根据apk/ipa内的scheme/包名唤起别的应用相关推荐

  1. html5多屏互动游戏,多屏互动 —— 手机端与PC端 网页互动的现有尝试及设想

    不可否认,多屏时代已经到来. 手机/平板/笔记本/PC/TV等,多个显示平台的逐步构建,为信息传播及交互提供了多重平台及体验选择. 素材:多屏自适应网页设计/多屏延生设计 在此篇文章,取手机端与PC端 ...

  2. 外网远程唤醒群晖NAS:路由器唤醒/内网树莓派唤醒/手机端WOL软件远程唤醒/网页工具唤醒

    一.内网区设置 1.电信光猫使用公网IP,设置桥接模式 2.路由器拨号上网,设置DDNS,开启远程管理(管理端口默认:8443)         https:/删除/XXXXXXXX.mynetgea ...

  3. PC谷歌浏览器测试手机端安卓、IOS网页

    在程序员开发工作中,我涉及到安卓和IOS兼容时,老是拿IOS实机来测试,安卓就直接在谷歌浏览器上测试,我发现这实在麻烦,因为在实机上有跨域问题,还要后端配合,今天心血来潮查了一翻资料,自己试了试,原来 ...

  4. 动画自动滚动div/像素基础知识/手机端样式选择/

    大体上和原网页差不多,一个主页和一个子页面 动画自动滚动div: <!DOCTYPE html> <html> <head> <meta charset=&q ...

  5. ecshop手机端订单城市插件(基于gps定位)

    以前曾看到有人说php能获取手机的ip,可是,在没有用WiFi并且手机是3G或者4G的卡时,根本无法获取手机的ip,所以在看到许多手机app都在用gps定位后,我也去研究了一下,经测试,确实可以获取所 ...

  6. 手机端联网,电脑端借助手机端网络上网

    估计有wifi的电脑使用者,会经常使用电脑做热点,手机(也有wifi)借助电脑的网络来上网,这个估计大多数都有尝试,关于这个的文章,估计百度一搜,一大把.有时候会出现手机和电脑连上了,有信号,但不能上 ...

  7. 手机端h5唤起苹果地图

    最近做一个项目分为pc和手机两个端,手机端需要调用第三方地图,可以选择高德地图和苹果地图,唤起高德地图的方法官网就有,网上一搜也是一大堆.这个不用多说,但唤起苹果地图的方法寥寥无几,几乎搜索不到,找了 ...

  8. 【fiddler学习问题记录】——手机端证书下载页打不开、无法将此证书安装(已解决)

    目录 1.手机端下载页打不开 解决方法1)电脑端--将网络设置成公用(亲测有效) 解决方法2)手机端将fiddler设置为信任应用,不被拦截 (未试) 2.无法将此证书安装 方法一:修改证书后缀名ce ...

  9. 如何爬取手机端cookie

    什么是cookie Cookie,有时也用其复数形式 Cookies.类型为"小型文本文件",是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经 ...

最新文章

  1. atexit()函数
  2. wpsppt怎样让图片模糊_图片优化的14个技巧!
  3. [ShapeInferenceError] Mismatch between number of source and target dimensions. Source=1 Target=0
  4. 生成式模型和判别式模型(转)
  5. python处理字典的方法_python字典的常用操作方法小结
  6. C++常见错误:LINK:fatal error LNL1123:转换到COFF期间失败,文件无效或者损坏
  7. 为什么程序员愿意加入管理糟糕的创业公司?
  8. 设计模式【单例模式】
  9. java判断栈中元素数目_Java数据结构与算法-栈和队列
  10. java删不了_java – 为什么我不能删除项目?
  11. 程序员因太过耿直,致苹果官网出现bug......
  12. http系列---Apache AB测试工具
  13. Java对象转Map的解决办法
  14. 如何利用Exif提取软件从图片中抓取有价值数据
  15. 等保2.0多少分合格?70分还是80分呢?
  16. Alpha阶段测试报告
  17. jquery引入外部CDN,失效后则引入本地jq库
  18. ThinkPad E420升级之路
  19. mybatis mapperLocations配置失效
  20. windows中定时操作(SetTimer函数用法)

热门文章

  1. 冷笑话之--漂流瓶与恶魔
  2. html编辑保存为word文档,html 保存成word (富文本编辑器导出内容成word)
  3. python语言中的注释会不会被执行_老师,你确定注释不会被执行吗?
  4. 梁斌penny_Penny Pinching在云端:您的Web应用程序不需要64位
  5. 贵州支教之第五天(11月11日)
  6. 网络安全技术——加密技术、数字签名技术
  7. 脱壳工具:ZjDroid的使用详解
  8. 概率论复习笔记——卷积公式
  9. Coding and Paper Letter(七十三)
  10. powerdesiger