-
2021-06-08 12:06:34
安卓用的ifarme方法
`var ifr = document.createElement("iframe");
var t1 = new Date().getTime(); document.body.appendChild(ifr);
ifr.setAttribute('style', 'display:none');
ifr.setAttribute('src', 'lewddriver://lsj/opensns?url='+lochref);
setTimeout(function() { document.body.removeChild(ifr);
}, 100);
setTimeout(function() { var t2 = new Date().getTime();
if (t2 - t1
(function() { //若iframe调用失败,尝试下载apk
window.location.href = _this.apkUrl;
})();
}
}, 200);
更多相关内容 -
Android 实现浏览器跳转APP应用,网页也可以跳转APP
2021-01-20 08:43:43path:同上 ※没有也可以唤起 注意: Activity配置中android:exported=true这个外部是否可以调用一定要写true,要不然会调用不成功,对于应用安全要求较高的一定要注意。 2、浏览器如何调起 <!--打开APP--> ... -
Android配置Scheme使用浏览器唤起APP的方式,以及不生效问题解决
2020-05-30 16:42:181、Scheme的作用,浏览器唤起APP。 2、遇到的不生效问题原因及解决办法。此文章已收入Android偶遇杂症合集(持续更新)
1、Scheme的作用,浏览器唤起APP
常见在手机浏览器打开某个网站,会有个 App 内打开的按钮,点击直接打开APP且跳转到该详情页,用的基本都是Scheme。Scheme的基本使用如下:
<activity android:name=".MainActivity"> <!-- 需要添加下面的intent-filter配置 --> <intent-filter> ... <data android:scheme="myscheme" android:host="myhost" android:port="1024" android:path="/main" /> </intent-filter> </activity>
在web页面添加一个点击事件跳转:
<a href="myscheme://myhost:1024/main?key1=value1&key2=value2">open app with Uri Scheme</a>
被唤起的MainActivity中,可以在onCreate(APP未打开)和onNewIntent(APP已打开)方法中拿到跳转的链接:
Intent intent = getIntent(); if (null != intent && null != intent.getData()) { Uri uri = intent.getData(); Log.e(TAG, "uri=" +uri); String scheme = uri.getScheme(); String host = uri.getHost(); int port = uri.getPort(); String path = uri.getPath(); String key1 = uri.getQueryParameter("key1"); String key2 = uri.getQueryParameter("key2"); Log.e(TAG, "scheme=" + scheme + ",host=" + host + ",port=" + port + ",path=" + path + ",query=" + uri.getQuery() + ",key1=" + key1 + ",key2=" + key2); }
打印消息如下:
uri=myscheme://myhost:1024/main?key1=value1&key2=value2 scheme=myscheme,host=myhost,port=1024,path=/main,query=key1=value1&key2=value2,key1=value1,key2=value2
2、遇到的不生效问题原因及解决办法
在应用中增加了Scheme,兴致勃勃启动浏览器按下核弹发射按钮,结果气氛逐渐尴尬。。。
问题出在哪呢?仔细比对了链接地址、AndroidManifest的配置,苍天啊,分明是一样的,令人崩溃!!!
然后一个偶然的机会,用了AS自带的Android模拟器里的web test APP开启这个链接,打开了一个新的页面,显示了设置的链接地址,问题的原因找到了!!!
我在web页面中设置的链接为
MyScheme://MyHost
,点开的页面显示的链接是myshceme://myhost
,神奇的事情,搜索一下发现了一篇文章,这位前辈和我遇到了一样的情况,文章链接如下:H5无法调起android app 的坑之 scheme 大小写
最终结果就是,Scheme链接千万别用大写字母,包括scheme、host、port、path。
完毕
今天的分享就到这里,文章多有不足,各位小伙伴有什么想法可以直接评论或是私信,要是对你有所帮助就给我一个赞吧,喜欢我的小伙伴可以关注我哦~
支持我的小伙伴们可以微信搜索“Android思维库”,或者微信扫描下方二维码,关注我的公众号,每天都会推送新知识~
-
uniapp h5在浏览器唤起app
2021-09-11 16:03:11这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。这两个场景又分为了IOS端和安卓端 配置 安卓 在manifest.json的"app-plus"->“distribute”->"android"节点下添加schemes数据:“schemes...需求
当用户打开h5 链接时候 ,点击打开app, 若用户在已经安装过app的情况下直接打开app,若未安装过跳到应用市场下载安装
这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。这两个场景又分为了IOS端和安卓端
配置
安卓
在manifest.json的"app-plus"->“distribute”->"android"节点下添加schemes数据:“schemes” : “nameAPP”"schemes" : ["nameAPP"]
IOS
在manifest.json的"app-plus"->“distribute”->"ios"节点下添加urltypes数据:"urltypes": [{ "urlidentifier": "xxx.xxx", // 一般为域名倒写,例如 taobao.com "urlschemes": ["nameAPP"] }], "urlschemewhitelist":["nameAPP"] //白名单
注意
下面代码的 nameAPP:// 就是代表着schemes/Universal Link 通用链接,也就是跳到自己app 的快捷链接 如果链接需要带参数的话redxiang://params ,这里的我写的是没带参数的,我只做了微信浏览器的判断,因为微信直接打开的h5链接是不能直接换起app的,需要在微信开放平台配置相关参数**(偷个懒直接让它跳到应用市场)。目前直接获取当前手机是android还是ios
<view class="sign-box" @click="myplayUser"> 立即下载 </view>
data() { return { timer:null, opening:null, } },
这里做了监听visibilitychange事件是浏览器新添加的一个事件,当浏览器的某个标签页切换到后台,或从后台切换到前台时就会触发该消息,简单说相当于onhide
watch: { 'opening': { handler: function(newVal, oldVal) { if(newVal == false){ document.addEventListener("visibilitychange",()=> { if (this.timer) { // this.opening = false clearTimeout(this.timer) } }, false); } }, immediate:true } },
写好了之后记得需要打包自定义基座测试
也是第一次写,还是看到一个大佬的文章 写的
myplayUser(){ //判断是否微信登陆 是的话直接跳到应用市场 var u = navigator.userAgent; var isWeixin = u.toLowerCase().indexOf('micromessenger') !== -1; // 微信内 if(isWeixin>-1){ if (uni.getSystemInfoSync().platform == 'android') { window.location = 'https://a.app.qq.com/o/simple.jsp?pkgname=xxxxxxxxxxx' }else if (uni.getSystemInfoSync().platform == 'ios'){ window.location = 'https://apps.apple.com/cn/app/idxxxxxxx' } return false } //若在其他浏览器 uni.showLoading({ title:'跳转中...' }) let that = this that.opening = true if (uni.getSystemInfoSync().platform == 'android') { // 安卓处理 let ifr = document.createElement('iframe'); ifr.src = "nameAPP://"; //配置的app 链接"schemes" : ["nameAPP"] ifr.style.display = 'none'; document.body.appendChild(ifr); //如果可以已经安装就可以直接打开了 that.timer = window.setTimeout(function () { // 未安装的情况 that.opening = false document.body.removeChild(ifr); // 提示下载 uni.hideLoading() let r = confirm("未安装APP? 是否下载") if (r) { window.location = 'https://a.app.qq.com/o/simple.jsp?pkgname=uni.zxxxxxxx' } }, 4000) } else { // IOS处理 window.location = "nameAPP://" //如果可以已经安装就可以直接打开了 that.timer = setTimeout(function () { // 未安装的情况。 that.opening = false // 跳转app store uni.hideLoading() let r = confirm("未安装APP? 是否去App store查看") if (r) { window.location = 'https://apps.apple.com/cn/app/idxxxxxxx' } }, 4000); } },
-
Android中一个app启动另一个app|从浏览器打开app
2022-01-10 09:35:21应用B中,AndroidManifest.xml的配置如下3.在应用B中,WCDBActivity中可获取应用A中传递过来的数据三、应用A点击按钮,跳转到...应用B中,AndroidManifest.xml需要修改四、通过浏览器打开Android App 应用1、首先做成HT文章目录
一、应用A中点击按钮,跳转到应用B
备注:这里是默认启动应用B的启动页面
// 通过包名获取要跳转的app,创建intent对象 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.db_demo");// 这里如果intent为空,就说名没有安装要跳转的应用嘛 if (intent != null) { // 这里跟Activity传递参数一样的嘛,不要担心怎么传递参数,还有接收参数也是跟Activity和Activity传参数一样// intent.putExtra("name", "Liu xiang");// intent.putExtra("birthday", "1983-7-13"); startActivity(intent); } else { // 没有安装要跳转的app应用,提醒一下 ToastUtils.success("哟,赶紧下载安装这个APP吧"); }
二、应用A中点击按钮,跳转到应用B中的指定Activity——(scheme方式)
1.应用A中,点击按钮
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("scheme_db://123123123")));
2.应用B中,AndroidManifest.xml的配置如下
<activity android:name=".ui.WCDBActivity" android:launchMode="singleInstance"> //多窗口,可添加android:launchMode="singleInstance" <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.VIEW"/> <data android:scheme="scheme_db"/> //通过scheme名称,可启动WCDBActivity </intent-filter> </activity>
3.在应用B中,WCDBActivity中可获取应用A中传递过来的数据
getIntent().getScheme();//获得Scheme名称 String data = getIntent().getDataString();//获得Uri全部路径 Toast.makeText(this, data+"",Toast.LENGTH_LONG).show();
三、应用A点击按钮,跳转到应用B的指定Activity——(指定包名和Activity全路径)
1.应用A中,点击
/**指定包名和带包名的Activity的名字*/ ComponentName componentName = new ComponentName("com.example.db_demo", "com.example.db_demo.ui.SQLiteActivity"); Intent intent = new Intent(); intent.putExtra("id", 1001); intent.setComponent(componentName); startActivity(intent);
2.应用B中,AndroidManifest.xml需要修改
<activity android:name=".ui.SQLiteActivity" android:exported="true" //必须配置,否则不能被其他应用开启 //如果想要在相邻窗口打开,则修改启动模式singleTask或者singleInstance android:launchMode="singleTask"/>
四、通过浏览器打开Android App 应用
原理同方法二,使用scheme
1、首先做成HTML的页面,页面内容格式例如以下:
<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
各个项目含义例如以下所看到的:
scheme:判别启动的App。 ※具体后述
host:适当记述
path:传值时必须的key ※没有也能够
query:获取值的Key和Value ※没有也能够作为测试例如以下:
<a href="myapp://jp.app/openwith?name=zhangsan&age=26">启动应用程序</a>
2、app应用中,待打开的Activity在AndroidManifest.xml的配置如下:
<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" android:host="jp.app" android:pathPrefix="/openwith"/> </intent-filter>
3、接下来在Activity中须要取值的地方加入下面代码:
Intent i_getvalue = getIntent(); String action = i_getvalue.getAction(); if(Intent.ACTION_VIEW.equals(action)){ Uri uri = i_getvalue.getData(); if(uri != null){ String name = uri.getQueryParameter("name"); String age= uri.getQueryParameter("age"); } }
-
记手机浏览器唤起app传递参数问题
2019-01-24 17:16:29使用uri的方式唤起unity游戏时遇到问题:在应用已经启动的情况下接受不到手机浏览器传递过来的参数 原因:在应用已启动的情况下唤起时不会走再次走onCreate,而是会调用onNewIntent,因此需要通过重写onNewIntent... -
Android 实现浏览器打开app
2021-06-04 16:52:01要想实现浏览器内打开app,其实我们可以看做就是打开一个链接,只是我们普通的链接都是http或者https开头的,如果要想打开app,那我么需要自定义这个schem。首先我们来学下下uri的组成吧scheme://host... -
通过浏览器直接打开Android App 应用程序
2021-06-03 18:08:32点击浏览器中的URL链接,启动特定的App。首先做成HTML的页面,页面内容格式如下:a href=[scheme]://[host]/[path]?[query]启动应用程序a 这一句就可以了。当然点击浏览器中的URL链接,启动特定的App。首先做成HTML... -
浏览器唤起App
2017-04-12 14:25:17浏览器唤起App -
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020-11-20 14:30:49h5页面唤起app如果没安装就跳转下载(iOS和Android) 浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app。因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app。 微信里屏蔽了 schema 协议,... -
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2020-09-27 23:12:42主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
iOS/Android 微信及浏览器中唤起本地 APP
2020-09-09 17:32:48为了提高转化率,就需要让用户不管是在微信或者是浏览器中,都能在点击链接后, 唤起本地的 app 后 , 跳转到指定页面 。 虽然这个功能从用户体验方面来说是自然而然的,但是由于iOS/Android平台差异性,在实现... -
Android-一个App内嵌浏览器
2019-08-13 05:15:59WappBrowser是一个Android In-App浏览器,这个浏览器遵循亚美H5框加规范,规范主要将H5 -
iOS/Android 微信及浏览器中唤起本地APP
2018-11-12 19:56:03iOS/Android 微信及浏览器中唤起本地APP -
h5端实现在微信浏览器下唤起app
2021-11-10 17:28:08微信公众号唤起app文档 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_H5_Launch_APP.html https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#1 【给做... -
android 浏览器跳转app
2018-08-16 13:24:00<!-- Tell Cocos2dxActivity the name of our .so -->...meta-data android:name="android.app.lib_name" android:value="cocos2dlua" /> <activity android:name="org.cocos2dx.lua.AppActivi... -
浏览器加载HTML页面唤起手机中的App最全攻略
2021-03-03 17:51:22Android通过Scheme协议打开APP界面 web页通过浏览器打开 js scheme 打开手机app的方法 Android 中 配置scheme,APP 中获取 Scheme中的参数值 如果你也热衷技术欢迎加群一起进步:230274309 。 一起分享,一起进步!... -
微信浏览器唤醒App
2021-09-02 14:28:36如下图所示,顶部会有一个广告图,点击这个广告图,如果手机上已经安装了App,则直接打开,如果没有安装,则开始下载,如果在微信公众号中,则跳转应用宝第三方平台跳转。 html <span @click="openAppClick" ... -
H5网页在浏览器中唤起app怎么实现?
2021-08-04 16:13:03借助Deeplink,实现从H5快速跳转到App 在移动端,Deeplink可以实现从H5页面直接跳到App指定页面的功能。比如你可以把一个H5页面在应用程序中分享给微信朋友,好友点击此链接就可以直接打开相应的App详细信息,而非... -
h5唤起app解决方案
2021-06-05 02:15:37最近遇到一个需求:点击一个按钮,如果本机装有则唤起app,没有的话则跳下载页。刚一接到需求,觉得很熟悉,实际上这个功能也确实很常见,页能搜索到一大堆方案,但是实际应用中,却发现总是很难做到100%的完美。这... -
安卓微信浏览器唤起系统内部浏览器
2021-01-22 08:37:40安卓微信浏览器唤起系统内部浏览器 最近因为公司项目需求,需要做一个功能。使用微信浏览器打开高德地图导航,经试验,高德web端没有导航功能,其实现原理是调起高德APP来实现导航的操作。然后把代码写进微信... -
【js】手机浏览器端唤起app,没有app就去下载app 的方法
2019-03-04 17:30:001.一般公司有自己的app,而app是需要不断有新用户涌入才能持续运营,达到不错的收入。就需要使用这种方式进行引入新的用户。 2.一些内容在网页端体验不好,或者一些功能需要app内才能实现,就需要将用户引入app中。... -
JS唤醒Android APP(包括在外部浏览器和WebView)
2021-06-06 03:50:071.AndroiManifest.xml中配置请在App启动的第一个Activity的那个节点中加入android:scheme="zhaojian"/>例如我是以GuideActivity为第一个启动的Activity,配置...在浏览器中唤醒APP需要在第一个启动的Activity中... -
微信浏览器打开APP
2021-10-27 13:55:58微信浏览器会阻止在其中直接打开APP 所有一般需要引导用户去其他浏览器 但是如果还是想在微信浏览器直接打开APP的话可以通过 wx-open-launch-app这个组件 这里是官方文档 需要的一些信息 在使用这个组件之前我们需要... -
可能是最全的h5唤起App方案
2021-11-08 16:19:39android6及以上用applink(chrome和小众浏览器支持,市场占比还是比想像中大的) 其它情况scheme(各种限制及弹窗确认) 微信ios7月的版本已经支持ulink了,android还是乖乖走应用宝吧(引导出微信也行,效果不好)... -
android 通过浏览器启动app,如果本地app先启动了,会出现启动两次的问题
2017-03-25 16:15:56最近有个需求,需要通过网页启动app,做了个本地的html尝试,发现先启动本地的app,然后再用浏览器启动时,不会跳转到已经启动的实例,而是浏览器里面也启动了这个app,一个app启动场景不一样,如何让浏览器启动跳到... -
常见APP唤起错误集锦
2017-10-31 13:39:00常见APP唤起错误问题排查,大多都是采坑记录,几乎涵盖所有唤起问题