整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Android 从网页中跳转到APP,从微信打开自己

Android 从网页中跳转到APP,从微信打开自己的app并打开指定页面

说实现步骤再说原理:

使用步骤

一,首先要给你要打开的应用中的activity设置过滤器(在清单文件里设置)

以JumpActivity为例

如下面的: <intent-filter> 中就是所需过滤器

<activity android:name=".JumpActivity" > 
 <intent-filter> 
 <action android:name="android.intent.action.VIEW" /> 
 <category android:name="android.intent.category.DEFAULT" /> 
 <category android:name="android.intent.category.BROWSABLE" /> 
		<!--下面所设置的质需要和html端对调-->
		<!--在data里设置了 scheme和host,则该Activity可以接收和处理类似于 "sharetest://data/XXX"的链接-->
 <data 
 android:host="data" 
 android:scheme="sharetest" /> 
 </intent-filter> 
</activity> 
 

二,在JumpActivity中做打开后的处理,用来接收外部的跳转

public class JumpActivity extends Activity{ 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 // TODO Auto-generated method stub 
 super.onCreate(savedInstanceState); 
		
 Intent intent=getIntent();//在这个Activity里,我们可以通过getIntent(),来获取外部跳转传过来的信息。
 String data=intent.getDataString();//接收到网页传过来的数据:sharetest://data/http://www.huxiu.com/
 String[] split=data.split("data/");//以data/切割data字符串
 url=split[1]; //就得到:http://www.huxiu.com/(这就是我们需要网页传给我们的数据)
		。。。然后我们再通过网页打开app的同时就可以用获得的url数据做一些我们需要做的处理
		比如你在微信里浏览网页时打开自己的安卓app应用的同时,加载一个app内的网页
 } 
 
} 

三,我们需要找到html前端,让他们在网页中加入:

<iframe src="" style="display:none"></iframe>
如下:index.html
<!DOCTYPE html> 
	<html> 
	<body> 
	<iframe src="sharetest://data/http://www.huxiu.com/" style="display:none"></iframe> 
	</body> 
	</html> 
将index.html放到Assets目录下,在代码里调用Webview加载该Html文件,代码如下:
/*网页打开app*/
public class H5ToAppActivity extends Activity {
 private String url;
 private WebView webview;
 
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_h5_app);
 
 
 webview=(WebView) findViewById(R.id.webviewh5);
 url="file:///android_asset/index.html";
 
 
 WebSettings wSet=webview.getSettings();
 wSet.setJavaScriptEnabled(true);
 webview.loadUrl(url);
 }
}

这样执行以上代码时就可以打开对应的app了。

比如我的2048是一个网页,打开网页的时候可以同时打开另外一个应用

下面是两个应用截图你可以下载下来看下效果:(两个应用一起下)

2048网页演示apk:http://download.csdn.net/detail/qiushi_1990/9514778

网页打开的应用apk:http://download.csdn.net/detail/qiushi_1990/9514779

手机界面

这样在打开2048时会出现下面效果

然后会跳转到下面应用

跳转成功

实现原理

最近,在使用QQ和微信等SDK来实现分享网页的时候,发现,SDK已经为页面跳转回应用提供了基本的数据支持。我们只需在应用里和被分享的网页进行简单的设置,即可实现此功能。

那么我们先来看下网页跳转回应用的实现原理。

就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:

scheme://host:port/path

举个实际的例子:

content://com.example.project:200/folder/subfolder/etc 
\---------/ \---------------------------/ \---/ \--------------------------/ 
scheme host port path 
 \--------------------------------/ 
 authority 

//现在大家应该知道data flag中那些属性的含义了吧,看下data flag 
<data android:host="string" 
 android:mimeType="string" 
 android:path="string" 
 android:pathPattern="string" 
 android:pathPrefix="string" 
 android:port="string" 
 android:scheme="string" /> 

点击微信和QQ分享跳转到程序内部的原理与此一致。

写在后面:

由于微信在5.0.3以后就禁用了微信浏览器里打开别的app,所以上面的方法在微信里不能直接起作用。但是我们有补救方法,

1,通过跳转应用宝,来判断是否安装应用,如果安装应用宝会直接打开

2,引导用户在浏览器里打开当前网页,因为微信虽然禁止了android:scheme跳转,但是浏览器都是支持的。

有任何关于编程的问题都可以私信我,我看到后会及时解答。

编程小石头,为分享干货而生!据说,每个年轻上进,颜值又高的互联网人都关注了编程小石头。

天和大家交流一下HtmlTextView的使用,HtmlTextView是一个开源的原生安卓第三方控件,主要的用途是直接把web端的html内容解析后展示在安卓手机上。应用场景很多,比如很多新闻类APP在web端编辑入库后是html的格式,这时候如果想显示在手机上,HtmlTextView就是一个很好的选择,当然有人会说谷歌自己的TextView通过一些方法也可以实现,但是我试过,效果简直不能再差,而且使用起来很复杂。这个HtmlTextView有多好,话不多说,直接上图:

在使用的时候,第一步是引入控件的依赖:

repositories {
jcenter()
}

dependencies {
compile 'org.sufficientlysecure:html-textview:4.0'
}

引入依赖后有几种不同的使用方式,根据自己实际的场景进行选择:

大部分的html标签都已经支持:

<p>
<div> handled exactly like <p>
<br>
<b>
<i>
<strong> (bug on some Android versions: generates italic)
<em> (bug on some Android versions: generates bold)
<u>
<tt>
<dfn>
<sub>
<sup>
<blockquote>
<cite>
<big>
<small>
<font color="..." face="...">
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
<a href="...">
<img src="...">

最后,一个最重要的问题,也是我最近使用遇到的最大的问题:

当html里面有src或者href等的时候,如果不做处理,APP会出现无法跳转至浏览器并且崩溃闪退的情况。解决这个问题的办法就是在方法里添加对应的点击事件,如下:

实践源于需求,



一个前端需求,需求如下:
前端网页有三种联系方式,邮箱,手机号,微信,
怎么实现手机上在网页上点击该文字进行相应的跳转
如:
点击邮箱号跳转到邮箱应用
点击手机号跳转到拨号应用
点击微信号跳转到微信应用
点击QQ号跳转到QQ应用

下面是简单的实现步骤。
              -- 记录与 2021年09月19日 测试可用

环境

简单的HTML页面
任意手机浏览器
Android手机 或 IOS手机

HTML实现

  • 点击邮箱号跳转到邮箱应用 (已测试)
<a href="mailto:support@xxx.com">邮箱:mailto:support@xxx.com</a>
  • 点击手机号跳转到拨号应用 (已测试)
<a href="tel:123">手机:123 </a>
  • 点击微信号跳转到微信应用 (已测试)
<a href="weixin://">微信号:123 </a>
  • 点击QQ号跳转到QQ应用 (未测试)
# 这个未测试,网上两种方法,可以都实践下
<a hfer="tencent://message/?uin=12345&Site=&Menu-=yes">弹出QQ为12345的窗口</a>

<a href="http://wpa.qq.com/msgrd?v=3&uin=1846189021&site=qq&menu=yes">联系客服</a> 

整理

<a href="mailto:support@xxx.com">联系我们</a>
<a href="tel:110">123 </a>
<a href="weixin://">123 </a>
<a hfer="tencent://message/?uin=12345&Site=&Menu-=yes">弹出QQ为12345的窗口</a>

总结

前三个邮箱、手机、微信都自身测试过,
Android, IOS点击可跳转对应应用,

QQ只是在网上搜了下,没做测试,可以尝试下看能不能成功

不过话说回来,找了半天,只在网上一些博客里找到了上述这几种的应用跳转,
不知道有没有比较官方的文档或者资料可以找到的,
当然,也可能是我关键词没搜对?
有知道的麻烦留言或者私我呼我下

其他

如有遗漏欢迎补充

如有问题欢迎留言

如有作用欢迎点赞

方便的话点个关注收藏更好了

2021年09月19日测试可用