软件编程
位置:首页>> 软件编程>> Android编程>> Android 如何使用短信链接打开APP

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

作者:Good包籽  发布时间:2022-01-09 02:45:25 

标签: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代码拷贝到手机里,点击选择品牌自带浏览器启动就可以啦。

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

基本启动功能.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();
       }
     }
   }

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

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

3.测试。

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

参数跳转.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代码最上面有了

来源:https://www.jianshu.com/p/2ace28e1b616

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com