Android 如何使用短信链接打开APP

 更新时间:2018年03月13日 13:37:21   作者:Good包籽  
这篇文章主要介绍了Android 如何使用短信链接打开APP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

短信链接跳转APP

平时我们会收到广告短信,比如某东,某宝,里面附加着链接,当你点开链接(手机自带的浏览器),发现浏览器打开后,等一下下,就会打开对应的APP,直接到广告相应的页面。

Android端的代码

从简单的开始,第一个启动的Activity先来处理

<activity android:name=".activity.ActivityFirst">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
 
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <!-- 不可以把上面,桌面启动图标的intent-filter,跟下面短信打开App的intent-filter写一起,否者没有桌面图标-->
  <!-- 在启动的activity加入以下代码,其中scheme很重要,短信启动App的标识吧 -->
  <intent-filter>
    <data android:scheme="baozi" />
 
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  </intent-filter>
</activity>

2.HTML代码,关键就是href,就是之前Android启动intent-filter的 “ [scheme的内容]” + “ :” 这个冒号不能少

<!DOCTYPE html>
<html>
<head>
  <title>Android短信测试</title>
</head>
<body>
  <a href="baozi:" rel="external nofollow" >启动程序</a>
</body>
</html>

3.测试一下,能不能启动App,我们没有服务器的情况下,可以把这段HTML代码拷贝到手机里,点击选择品牌自带浏览器启动就可以啦。

基本启动功能.gif

最基本的功能实现啦,然后我再传递参数,打开指定的页面。

1.HTML的跳转链接里面添加参数

<a href=" scheme的内容 :// host的内容?传递参数的key=传递参数的value" rel="external nofollow" >随意什么内容...</a>

<a href="baozi://bao.cn?type=red&url=111&name=红色" rel="external nofollow" rel="external nofollow" >启动红色程序</a>
<a href="baozi://bao.cn?type=yellow&name=黄色" rel="external nofollow" rel="external nofollow" >启动黄色色程序,url空</a>
<a href="baozi://bao.cn?type=green&url=333" rel="external nofollow" rel="external nofollow" >启动绿色程序,name空</a>

scheme:启动的App的标识,相当于协议吧。

host:域名,不重要。

query:传给app参数的Key和Value 。

2.Android代码,在第一启动页加入下面代码

public static final String TYPE_INTENT = "type";
  public static final String URL_INTENT = "url";
  public static final String NAME_INTENT = "name";

  if (intent.getData() != null)
    {
      Uri uri = intent.getData();
      uri.getScheme();//获取scheme
      uri.getHost();//获取host
      uri.getAuthority();//获取authority
      String type = uri.getQueryParameter(TYPE_INTENT);//获取传递参数
      String url = uri.getQueryParameter(URL_INTENT);
      String name = uri.getQueryParameter(NAME_INTENT);
      //标题转UTF-8码
      if (!TextUtils.isEmpty(name))
      {
        try
        {
          name = URLDecoder.decode(name, "UTF-8");
        } catch (UnsupportedEncodingException e)
        {
          e.printStackTrace();
        }
      }
    }

参数可以传空的,如果是中文要转码,断点看看参数

3.测试。

参数跳转.gif

4.总结,短信跳转App难度不大,就是基本用原生或者chrome内核的浏览器,支持跳转,其他浏览器兼容问题会有。

5.代码不多,就直接放出来。

ActivityFirst代码

public class ActivityFirst extends AppCompatActivity
{
  public static final String TYPE_INTENT = "type";
  public static final String URL_INTENT = "url";
  public static final String NAME_INTENT = "name";
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_activity);

    //如果是从网址打开的
    Intent intent = getIntent();
    if (intent.getData() != null)
    {
      Uri uri = intent.getData();
      uri.getScheme();//获取scheme
      uri.getHost();//获取host
      uri.getAuthority();//获取authority
      String type = uri.getQueryParameter(TYPE_INTENT);
      String url = uri.getQueryParameter(URL_INTENT);
      String name = uri.getQueryParameter(NAME_INTENT);
      //标题转UTF-8码
      if (!TextUtils.isEmpty(name))
      {
        try
        {
          name = URLDecoder.decode(name, "UTF-8");
        } catch (UnsupportedEncodingException e)
        {
          e.printStackTrace();
        }
      }

      //获取到的参数跳转
      Intent intentStart = new Intent(this,ActivityMain.class);
      intentStart.putExtra(TYPE_INTENT,type);
      intentStart.putExtra(URL_INTENT,url);
      intentStart.putExtra(NAME_INTENT,name);
      startActivity(intentStart);
      finish();
    }
  }
}

HTML代码

<!DOCTYPE html>
<html>
<head>
  <title>Android短信测试</title>
</head>
<body>
  <a href="baozi://bao.cn?type=red&url=111&name=红色" rel="external nofollow" rel="external nofollow" >启动红色程序</a>
  <br>
  <a href="baozi://bao.cn?type=yellow&name=黄色" rel="external nofollow" rel="external nofollow" >启动黄色色程序,url空</a>
  <br>
  <a href="baozi://bao.cn?type=green&url=333" rel="external nofollow" rel="external nofollow" >启动绿色程序,name空</a>

</body>
</html>

Manifest代码最上面有了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 简单谈谈android studio 的单元测试

    简单谈谈android studio 的单元测试

    昨天在完善项目的时候,需要进行单元测试,在Eclipse环境中进行是很简单的,但是在Android Studio环境中进行单元测试,在国内找了很多资料,大都是人云亦云,本文发布出来供大家学习参考。
    2016-08-08
  • Android封装的http请求实用工具类

    Android封装的http请求实用工具类

    提供一个Android封装的http请求实用工具类,在做ANDROID网络开发中这个经常要用到,大家可以参考下面的工具类修改成自己的工具
    2013-11-11
  • Android开发之图形图像与动画(一)Paint和Canvas类学习

    Android开发之图形图像与动画(一)Paint和Canvas类学习

    Paint类代表画笔,用来描述图形的颜色和风格,如线宽,颜色,透明度和填充效果等信息;Canvas类代表画布,通过该类提供的构造方法,可以绘制各种图形;感兴趣的朋友可以了解下啊,希望本文对你有所帮助
    2013-01-01
  • Android基础之常用控件属性介绍

    Android基础之常用控件属性介绍

    大家好,本篇文章主要讲的是Android基础之常用控件属性介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Android中ListView的几种常见的优化方法总结

    Android中ListView的几种常见的优化方法总结

    Android中的ListView应该算是布局中几种最常用的组件之一,本篇文章主要做了三种优化总结,有兴趣的可以了解一下。
    2017-02-02
  • Android拼接实现动态对象方法详解

    Android拼接实现动态对象方法详解

    这篇文章主要为大家介绍了Android拼接实现动态对象方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android实现微信支付功能

    Android实现微信支付功能

    这篇文章主要介绍了Android实现微信支付功能,微信支付功能,几乎成为很多APP付款的主要方式之一,本文讲解Android APP微信支付功能开发,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android 自定义View实现抽屉效果

    Android 自定义View实现抽屉效果

    这篇文章主要介绍了Android 自定义View实现抽屉效果的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android实现3D标签云简单效果

    Android实现3D标签云简单效果

    这篇文章主要为大家详细介绍了Android实现3D标签云简单效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法

    Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法

    这篇文章主要介绍了Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法,结合实例形式分析了Android使用Activity嵌套多个Fragment进行横竖屏切换的原理与具体操作技巧,需要的朋友可以参考下
    2017-11-11

最新评论