Android 从网页中跳转到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分享跳转到程序内部的原理与此一致。

时间: 2024-10-11 07:43:19

Android 从网页中跳转到APP的相关文章

android:scheme 通过uri跳转到APP应用指定Activity

最近公司有个需求,点击第三方APP的H5页面然后直接跳转到APP里面,比如浏览器打开一个H5页面,然后点击某个链接就直接到APP的某个指定的Activity,经过研究发现实现还是蛮easy的,下面说下方法吧. 首先,在AndroidManifest.xml里面进行配置,在对应的Activity加上一个intent-filter, 如下: <application android:icon="@drawable/ic_launcher" android:label="@s

Android内核开发:从源码树中删除出厂的app应用

本文是<Android内核开发>系列的第十一篇文章,本文重点介绍如何从Android源码中删除出厂的app应用. 上一篇文章中提到过,系统出厂的app应用,其实就是被安装到/system分区的app,这些app在Android源码树中被编译后打包到了system.img镜像中,系统启动时,以只读的方式挂载/system目录,因此,非root手机用户是无法删除这些app的. 如果我们已经成功获取了手机的root权限,就可以通过下面的方法直接删除掉系统出厂的app应用,假设某app的安装文件叫做x

Android:让Link始终保持在程序的WebView中跳转

在Android的WebView中,当点击调用网页的链接时,默认的动作是跳转到系统设定的默认浏览器中.如果想让链接始终在当前WebView中跳转的话,就需要添加以下代码: 1 WebView webView = (WebView) findViewById(R.id.webView1); 2 webView.setWebViewClient(new WebViewClient()); 如果只是想让特定的URL保持在WebView中跳转的话,可以通过重写WebViewClient来实现,示例如下:

Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下.1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)); startActivity(intentPhone); 2)跳转到拨号界面 Intent intent = newIntent(Intent.ACTION_DIAL,Uri.pars

在当前的webview中跳转到新的url 使用WebView组件显示网页

如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接.给WebView加一个事件监听对象(WebViewClient)并重写其中的一些方法:shouldOverrideUrlLoading:对网页中超链接按钮的响应.当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url. webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverri

微信h5页面中跳转下载第三方app的办法

需求:在微信h5页面中下载第三方app -- 安卓, 直接下载apk文件包:iphone,跳转AppStore 分析:微信不支持,在微信中屏蔽了apk文件的下载以及AppStore的跳转(且除非和TX有合作的应用,否则也不支持通过scheme跳转第三方app) 变通方法: 一.借助TX的应用市场 --'应用宝':将app上架应用宝,在微信中点击下载按钮(app的应用宝微下载地址),安卓则可跳转应用直接进行下载,iphone则会自动跳转Appstore(需在TX开发平台进行配置) 总结:虽然这种方

Android:源码环境编译自定义的APP到ROM(System Image)中

有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布. 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考另一篇文章,直接在Eclipse中调试系统级应用源代码: Android:基于Eclipse编译调试系统级应用源代码 2. 在SDK环境基本调试OK 3. 将源代码复制到 $Android_Src/packages/apps/目录下,假设你的模块为 MyApplication 4. 在MyAppli

iOS 获取appStore的链接地址,从app中跳转 appStore中应用

从app中跳转到appStore中,分为 1.取得app在appStore中的链接地址 mac打开iTunes,在右上角中的搜索框中输入你的应用名称. 在弹出的菜单中,选择复制链接,得到该应用的链接地址: https://itunes.apple.com/cn/app/jie-zou-da-shi/id493901993?mt=8 然后将 http:// 替换为 itms:// 或者 itms-apps:// 替换后的链接地址. itms-apps://itunes.apple.com/cn/a

Android内核开发:在源码树中添加新的app应用

本文是<Android内核开发>系列的第十二篇文章,上一篇文章介绍了如何从源码中删除出厂的app应用,本文则在此基础上,详细介绍一下如何在Android内核源码树中添加一个新的app应用. 网上也有介绍怎么在源码中添加新的app应用的博文,但大都数只介绍了不含有jni本地代码的app的添加方法,本文会更加全面地介绍三种不同类型的app应用如何添加到Android内核源码树中编译. 假设新的应用名字叫:HelloWorld,并且已经在Eclipse或者Android Studio中编译和调试通过