Unity如何判断手机是否安装某APP应用
来源:互联网 发布:电脑加速软件知乎 编辑:程序博客网 时间:2024/06/04 19:34
—————————————————————————————————————————
简单介绍一下如何判断手机里是否安装了某款APP,先配一张图,显得高大上。
Android系统手机和iOS系统手机判断方式不同,要分开来做,首先介绍iOS系统,比较简单。
—————————————————————————————————————————
一、iOS判断手机是否安装Line
使用iOS系统提供的canOpenURL函数判断:
BOOL CanOpenLine(){
NSURL *lineURL = [NSURL URLWithString:@"line://"];
if ([[UIApplication sharedApplication] canOpenURL:lineURL])
{
return YES;
}else{
return NO;
}
}
这是OC代码,在unity里面怎么调用呢?
首先在unity中写这个:
[System.Runtime.InteropServices.DllImport("__Internal")]private static extern bool CanOpenLine();
然后在.mm脚本里面这么做
extern "C" { BOOL CanOpenLine(){ } }
.mm脚本放在工程里这个位置:
介绍完了是否存在Line,那么怎么判断是否存在微信或其他APP呢?
请注意这句:NSURL *lineURL = [NSURL URLWithString:@”line://”];
这里的“line://”叫IOS URL schemes,常用的可以百度搜,如:
QQ mqq:// 微信是 weixin:// 网易新闻 newsapp:// 淘宝 taobao://
对,换成“weixin://”就是判断是否存在微信。对于一些不常用的软件怎么查找url schemes 呢?
找到ipa文件 改成zip解压 在playload文件下找到info.plist 用文本编辑软件打开查schemes 都能找到。
如果你认为到此就完了,你太天真了!在iOS操作系统iOS9以前以上步是没问题的。在iOS9以后需要增加一步。
为应用程序添加白名单:
找到Xcode工程里的“Info.plist”文件,然后打开添加以下代码就没问题了。
<key>LSApplicationQueriesSchemes</key> <array> <string>line</string> </array>
另外附加一个问题,如何查看APP在APP Store的链接?如line:https://itunes.apple.com/jp/app/line/id443904275?mt=8
打开App Store进入应用,右上角的分享按钮(从右往左数第二个),拷贝连接即可^_^
—————————————————————————————————————————
二、Android判断是否安装Line
通过遍历所有应用程序的包名,判断是否存在line的包名,在unity里这么写:
AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager"); AndroidJavaObject appList = packageManager.Call<AndroidJavaObject>("getInstalledPackages",0); int num = appList.Call<int>("size"); for(int i = 0; i < num; i++) { AndroidJavaObject appInfo = appList.Call<AndroidJavaObject>("get", i); string packageNew = appInfo.Get<string>("packageName"); if(packageNew.CompareTo("jp.naver.line.android") == 0) { return true; } } return false;
然后直接调用即可。
“jp.naver.line.android ”是日本line包名。如何查看其它APP包名呢?
1、百度可以查到大部分常用的包名,小部分查不到的包名使用apktool反编译.apk,到AndroidManifest.xml里找。
2、到Google Play商店该APP页面,以Line为例,https://play.google.com/store/apps/details?id=jp.naver.line.android
URL中的“jp.naver.line.android”便是Package Name了。
- Unity如何判断手机是否安装某APP应用
- 手机浏览器下判断是否安装某app,并判断是否打开该应用
- 手机浏览器下判断是否安装某app,并判断是否打开该应用
- HTML中判断手机是否安装某APP,跳转或下载该应用
- Android如何判断手机里是否安装了某个应用
- 判断手机上是否已安装app
- IOS 判断手机设备上是否安装某款应用
- Android 判断手机是否安装某个应用
- JS判断手机端是否安装了某个客户端APP应用
- JS判断手机端是否安装了某个客户端APP应用
- JS判断手机端是否安装了某个客户端APP应用
- web页面判断是否安装某app,并判断是否打开该应用
- Scheme详解( web页面判断是否安装某app,并判断是否打开该应用)
- 如何通过包名判断手机是否安装了QQ,微信,或其他应用
- JS判断手机端是否安装了某个客户端APP
- 手机浏览器判断app是否安装并启动
- ios判断手机中是否安装了某个App
- ios判断手机中是否安装了某个App
- 第7章 套接字选项
- linux awk命令详解
- JQuery3.1.1源码解读(十八)【class】
- CPU架构-RISC
- itext通过pdf模板填充数据并调用打印机打印
- Unity如何判断手机是否安装某APP应用
- NAT介绍及iptables配置NAT的方法
- 圆角图片展示控件
- Jmeter使用之:高效组织接口自动化用例技巧
- 源码分析参考:Queue
- rem
- 3.shell脚本
- linux环境指令总结(针对服务器环境部署的指令)
- 对页面不能为空的检验,在输入框里面提示不能为空的封装