android中通过浏览器启动nativeAPP

今天用uc浏览器上淘宝,当我点击购买的时候,系统会自动跳转并打开本地的淘宝app的对应页面,于是在网上研究了一下,是这么回事:本地的app和html网页是有一定的约束和规范的,也就是说,我在html网页上的超链接的某一些内容和本地app中的需要打开的activity所设置的action是一样的。我们来看一一个栗子:

新建一个launcher.html

<html>
<body>
<a href="testapp://haha/open?name=lisi&age=30&from=ucbroswer">启动apk</a>
</body>
</html>

可以看到launcher.html的内容很简单,就是一个简单的超链接,这里我们主要用于启动app的连接是:"testapp://haha/open"

注意这里的"testapp://haha/open"就是刚才说的,必须遵守nativeapp中的action中声明的一些规范,另外"name=lisi&age=30&from=ucbroswer"是我们从html向native app中传递的值。

我们启动MainActivity.java这个类,因此需要该工程的androidManifest.xml中增加对该类声明的action,这个action中就是规范html中的跳转连接的写法,如下:

 <activity
            android:name="com.example.htmllauncher.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <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="haha"
                    android:pathPrefix="/open"
                    android:scheme="testapp" />
            </intent-filter>
  </activity>		

我们可以看到增加了这样一个action标签:

<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="haha"

android:pathPrefix="/open"

android:scheme="testapp" />

</intent-filter>

其中<data>标签,就是对html的规范,再来看看我们html中的跳转连接,是这样写的:testapp://haha/open    ,这样就可以通过该超链接跳转到该MainActivity当中了。

好了,现在通过MainActivity如何获得html当中传递过来的数据呢??看下面的代码:

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");
		        String from = uri.getQueryParameter("from");
		        Toast.makeText(MainActivity.this,"name is :"+name+"==age is :"+age+"==from is :"+from,Toast.LENGTH_SHORT).show();
		    }
}

好了,这样就完成了html打开本地app并且传递参数的简单功能,希望大家喜欢。。

源码下载

时间: 2024-12-26 07:23:28

android中通过浏览器启动nativeAPP的相关文章

android中intent的启动技巧

在其他页面中启动intent时,最后将intent封装在自己的类的内部,这样既可以很快的方便别人去调用,同时这样的设计模式也可以节省很多时间去阅读代码... 具体接口: public static void actionStart(Context context, String data1, String data2) {         Intent intent = new Intent(context, SecondActivity.class);         intent.putEx

【学习笔记】Android中的Activity启动模式

先了解两个概念:任务栈ID.Activity实例ID 设置启动模式在manifests->ActivityManifest.xml里 <activity         android:name=".MainActivity"        android:launchMode="standard"> 一.标准模式standard 每次启动自己的Activity都会启动,任务栈ID一个,Activity实例ID每次都不一样 二.SingleTop

android中活动的启动模式

活动的启动模式 1.standard 2.singleTop 3.singleTask 4.singleInstance standard为默认的活动启动模式(无论活动是否在栈顶,都会创建一个新的活动) sing了Top(如何栈顶有了新的活动就不会创建新的活动,会直接使用已经存在的活动) singleTask(可以解决重复创建栈顶活动的问题,创建新的活动之前会检查是否活动已经存在,若存在就把该活动之前的活动全部清出栈,将该活动显示在栈顶,否则就创建一个新的活动) singleInstance(该

Android中Activity的启动流程和组织管理方式(Backstack、Task)

前言: Android对Activity的组织管理会引入一些名词概念术语,像Stack.Task等,本文会做简单介绍.Activity的启动.切换以及组织管理会受不同的配置和属性的影响,本文会简单介绍一些相对重要和典型的概念,比如BackStack.Affinity. 文章目录: ? 概述? Launcher启动Activity? 应用内启动子Activity? 锁屏状态下启动Activity? Stack.Task.BackStack.Affinity 此文章原始是PPT格式已转换为PDF,请

如何在Android中的Activity启动第三方应用程序?

如何在点击某个按键后,执行启动第三方应用程序界面? /** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startUpApplication(String pkg) { PackageManager packageManager = mContext.getPackageManager(); PackageInfo packageInfo = null; try { // 获取指定包名的应用程序的PackageInfo实例

Android中Activity启动模式详解,可以控制程序按home键后进来还会调用一个自己不喜欢的界面

其实这是很简单的一个问题.但是这还是要对android中activity的启动模式有相当的理解才行,当点击home键的时候,懂Android的人都知道,他会把当前activity放到后退栈中, 栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算.人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底.向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称为出栈或退栈,它是把栈

Android中Activity启动模式详解

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /> Activity的四种启动模式:

Android 中 Activity 启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /> Activity的启动模式分为四种: 1. standard 在standard模式(

通过浏览器启动APP

1 package com.example.metrox.l11; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 6 public class LocalApp extends AppCompatActivity { 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onC