Android编程实现点击链接打开APP功能示例

本文实例讲述了Android编程实现点击链接打开APP功能。分享给大家供大家参考,具体如下:

在Android中点击链接打开APP是一个很常见的需求。例如,电商为用户发送优惠券之后经常会下发一条短信:某某优惠券已发送到您的账户中,点击 xxx 链接即可查看!此时当用户点击链接之后会直接打开本地APP,进入相关页面。

功能实现:

1.在manifest中为相应的activity添加intent-filter:

?


1

2

3

4

5

6

7

8

9

10

11

12

<activity

   android:name=".TestActivity">

   <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="mywebsite.com"

        android:pathPrefix="/openApp"

        android:scheme="http" />

   </intent-filter>

</activity>

2.在手机上模拟发一条短信,包含链接 http://mywebsite.com/openApp ,手机一般都能自动识别链接,点击链接后系统会弹出选择框,如下:

点击自己的APP(AndroidTest)之后,系统就会自动打开AndroidTest这个程序的TestActivity这个页面。

3.然而,上述做法显然是不完美的,因为用户很可能会选择浏览器打开此链接!为了解决这个问题,可以将scheme属性修改为自定义的,例如:

?


1

2

3

4

<data

   android:host="mywebsite.com"

   android:pathPrefix="/openApp"

   android:scheme="myapp" />

此时,对应的链接地址为 myapp://mywebsite.com/openApp . 因为手机本地只有我们自己的程序能够识别 myapp 这个协议,所以会直接打开APP。然而依旧存在问题:

(1)如果把该链接放在网页上,希望希望用户点击链接后打开APP,那么上述做法是没有问题的。例如网页中添加如下代码即可:

?


1

<a href=myapp://mywebsite.com/openApp>点击打开APP</a>

(2)但是,如果把链接放在短信中就不行了。因为 myapp 这个协议系统的短信程序也不能识别,所以不会标记为链接样式,也就是说用户不能直接点击。

解决该问题的方法是使用网页重定向功能,例如在短信中发送链接: http://abc.com/openApp ,然后在该网页上添加重定向:

复制代码代码如下:

<meta http-equiv="Refresh" content="0;url=myapp://mywebsite.com/openApp?name=zhangsan&age=20" />

用户在短信中点击后会使用浏览器打开链接,然后自动打开自己的APP。

4.最后,在TestActivity中可以获取链接url传递的参数:

?


1

2

3

4

5

6

7

8

9

10

Intent intent = getIntent();

String action = intent.getAction();

if (Intent.ACTION_VIEW.equals(action)) {

   Uri uri = intent.getData();

   if (uri != null) {

     String name = uri.getQueryParameter("name");

     String age = uri.getQueryParameter("age");

     Toast.makeText(this, "name=" + name + ",age=" + age, Toast.LENGTH_SHORT).show();

   }

}

PS:关于AndroidManifest.xml文件相关属性功能可参考本站在线工具:

Android Manifest功能与权限描述大全:
http://tools.jb51.net/table/AndroidManifest

原文地址:https://www.cnblogs.com/lenkevin/p/8508800.html

时间: 2024-08-02 13:22:29

Android编程实现点击链接打开APP功能示例的相关文章

html点击链接打开新窗口

html标记中格式为<a href="url"> text </a> 此时,内容在原来窗口呈现,如果想新开窗口,可以采用下列方式. 1. <a href="http://www.baidu.com/" onclick="window.open( this.href, '_blank', 'scrollbars=0,sesizebar=0,sesizeable=0,width=300' );return false"&

Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据(转)

今天老大给我提了一个需求叫我调研一下,他已经测试了IOS平台上是可以的,需求很简单就是在系统浏览器中通过输入一个uri就可以打开相应的app. 比如你在IOS中的系统浏览器中输入:tel://123,就会跳到拨打电话页面而且拨打号码是123,像这样的命令,老大他用了小米手机测试了一下,发现可以的,所以他就以为Android的也是可以的,但是当我用三星和htc手机测试发现不行,这时候老大就纠结了,但是我个人认为,我们都知道小米手机是模仿IOS的,没想到模仿的这么想.所以老大就叫我去调研,我查阅了资

怎么在android实现通过浏览器点击链接打开apk

intent://scan/#Intent;scheme=appname://appname/[频道]/[id];package=com.appname.package;end 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]">启动应用程序</a> 这一句就可以了. 各个项目含义如下所示: scheme:判别启动的App. ※详细后述 host:适当记述 path:传值时必须的key

android intent-filter 注册网页链接打开app

如下实现注册m.hao123.com的链接: <intent-filter><category android:name="android.intent.category.BROWSABLE"/> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT&q

Android 编程下 TextView 添加链接的一种方式

原文地址:http://www.cnblogs.com/sunzn/p/3406013.html 通过如下这种方式给 TextView 添加的链接支持链接样式.点击事件.href 样式,代码如下: package cn.sunzn.tlink; import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.te

点击链接打开两个页面

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>点击一个链接同时打开两个页面</title> <script type="te

点击链接打开微信再跳转到微信内部浏览器的解决方案

最近一朋友的客户有这么一需求,引导用户去关注公众号.想这么干,通过网页跳转到微信并打开带有二维码的网页,用户长按识别二维码就可以关注了. 如下这个链接可实现这个功能:http://t.cn/Ewd6Hqq 有需要的小伙伴可以加我qq:1175823568 了解详情 原文地址:http://blog.51cto.com/14105018/2324465

Android之文字点击链接

定义textView1和textView2并获得组件. String html = "<font color='red'></font>"; html += "<a href='http://www.baidu.com'>百度一下</a><br>"; // 点击的时候产生超链接 CharSequence charSequence = Html.fromHtml(html); textView1.setTex

当你点击链接打开网页的那一瞬间 究竟发生了多少事?(转)