android 提供了通过sheme打开activity,例如我们在webview点击链接可以打开打电话,发短信等,也可以通过Intent开打开activity

一,通过用手机的浏览器(内置,第三方都可)访问一个网页,实现点击一个链接启动自己的应用,并传递数据。

首先在Mainifest文件里面对要启动的Activity添加一个过滤器。

 <activityandroid:name="com.example.helloworld.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"/>  <categoryandroid:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.categoryBROWSABLE"/><data android:scheme="znn"/></intent-filter></activity>

在MainActivity接收数据:

public class MainActivity extends Activity implements View.OnClickListener{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = getIntent();String scheme = intent.getScheme();Uri uri = intent.getData();System.out.println("scheme:"+scheme);if (uri != null) {String host = uri.getHost();String dataString = intent.getDataString();String id = uri.getQueryParameter("id");String path = uri.getPath();String path1 = uri.getEncodedPath();String queryString = uri.getQuery();System.out.println("host:"+host);System.out.println("dataString:"+dataString);System.out.println("id:"+id);System.out.println("path:"+path);System.out.println("path1:"+path1);System.out.println("queryString:"+queryString);}}
}

写一个最简单的网页:

<a href=”znn://aa.bb:80/test?p=12&d=1″>test</a>

测试地址:www.erdian.net/m.html

测试结果:

scheme:znn

host:aa.bb

dataString:znn://aa.bb:80/test?p=12&id=1

id:1

path:/test

path1:/test

queryString:p=12&d=1

二, 利用如下Intent调用Activity

<activityandroid:name=".SecondActivity"android:label="@string/app_name"><intent-filter><category android:name="android.intent.category.DEFAULT" /><action android:name="android.intent.action.VIEW" /><data android:scheme="dadabus"  android:host="page" android:path="/b" /></intent-filter></activity><activityandroid:name=".ThirdActivity"android:label="@string/app_name"><intent-filter><category android:name="android.intent.category.DEFAULT" /><action android:name="android.intent.action.VIEW" /><data android:scheme="dadabus"  android:host="page" android:path="/c"/></intent-filter></activity>
try {MYIntent intent = new MYIntent(Intent.ACTION_VIEW, Uri.parse("dadabus://page/b?id=9"));System.out.println("len intent class"+intent.hashCode());MainActivity.this.startActivity(intent);} catch (ActivityNotFoundException e) {e.printStackTrace();Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("dadabus://"));intent.addCategory("dadabus_first");}

上面两个例子可以说明怎么用sheme,其实就是自定义Uri,格式是scheme://host/path?key=value&key2=value2很熟悉是不是。

在设置intent和intent-filter是有三个常用参数data,action,category是要特别注意的,会有新的文章来说明。

有个使用注意事项也附上http://blog.csdn.net/csxwc/article/details/10222913

android 通过sheme打开activity相关推荐

  1. android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用

    1.为应用添加新的Activity 第一步:新建一个继承Activity的类,如:NewActivity public class NewActivity extends Activity {     ...

  2. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

  3. Android 通过网页打开自己的APP(scheme)

    Android 通过网页打开自己的APP(scheme) 分类: android2014-07-09 17:35 8565人阅读 评论(2) 收藏 举报 通过用手机的浏览器(内置,第三方都可)访问一个 ...

  4. Android调用浏览器打开网址遇到的问题

    我自己的手机(一加一代,升级了氢OS),然后在点击游戏内一个"隐私政策"-- 需要打开一个网页,然后就crash了.出错的信息如下: 完全是看不出来,然后我单独写了一个demo来测 ...

  5. 【Android 启动过程】Android 应用启动流程 | Activity 启动流程

    文章目录 一.Android 系统启动流程 二.Activity 启动流程 一.Android 系统启动流程 打开 Android 手机电源键后 , 先运行 BootLoader , 然后使用 Boo ...

  6. Android初级开发笔记-- activity启动模式的学习(1)

    第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...

  7. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

    Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...

  8. android 使用浏览器打开指定页面

    今天,简单讲讲android里如何使用浏览器打开指定的网页. 之前,我做一个功能时,服务器返回一个url地址,我需要跳转到指定网页.却发现自己不知道怎么做,在网上搜索了资料,最终是解决了问题.这里记录 ...

  9. Android开发之打开指定APP | 打开APP任意页面的方法

    方法一: 此方法只是打开APP,说白了就是类似你手动点击APP图标打开而已 PackageManager packageManager = getPackageManager(); Intent in ...

最新文章

  1. 利用反射计芯片进行非接触式液位测量
  2. linux中的网络配置
  3. 《构建之法》阅读笔记07
  4. java编程数据溢出问题_Java数据溢出代码详解
  5. nssl1336-膜拜神牛【LIS】
  6. 程序集、应用程序配置及App.config和YourSoft.exe.config .
  7. H5常用拖放事件解析
  8. ES6精华: 解构运算符 扩展运算符 剩余运算符
  9. Web.XML配置详细说明
  10. js提交java后台,双引号转义为amp;quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决
  11. u8转完看不到菜单_web网页有错误,无法看到操作菜单-用友U8
  12. soul群聊显示服务器异常,soul群聊状态是什么
  13. 一文读懂GaussDB(for Mongo)的计算存储分离架构
  14. android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
  15. 不安全的文件下载原理
  16. python搭建web服务器_用Python建立最简单的web服务器
  17. leetcode(85)最大矩形
  18. 多质点列车动力学模型
  19. python小白进阶之路三——七段数码管的绘制+做一个酷炫的倒计时(函数的复用)
  20. Unity Editor模式编辑属性即时生效

热门文章

  1. htc管理root授权,htc手机怎么root权限获取
  2. YOLOV3代码与原理相互结合的理解(重点在特征图的输出的元素的解析)
  3. 微信跳一跳多种辅助合集
  4. 2021Shopee退款退货政策
  5. Python基础——异常处理
  6. 用ps出夜间无人驾驶汽车的教程
  7. anaconda遇到“An unexpected error has occurred”问题
  8. 虚拟战争史——关于VR如何改变未来
  9. 计算机运算力高很难被入侵,ETC系统客户数据异常检测法研究.pdf
  10. windows 键盘消息的机制