android 通过sheme打开activity
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相关推荐
- android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用
1.为应用添加新的Activity 第一步:新建一个继承Activity的类,如:NewActivity public class NewActivity extends Activity { ...
- android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...
转载:http://blog.csdn.net/xiabing082/article/details/48781489 1. 大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...
- Android 通过网页打开自己的APP(scheme)
Android 通过网页打开自己的APP(scheme) 分类: android2014-07-09 17:35 8565人阅读 评论(2) 收藏 举报 通过用手机的浏览器(内置,第三方都可)访问一个 ...
- Android调用浏览器打开网址遇到的问题
我自己的手机(一加一代,升级了氢OS),然后在点击游戏内一个"隐私政策"-- 需要打开一个网页,然后就crash了.出错的信息如下: 完全是看不出来,然后我单独写了一个demo来测 ...
- 【Android 启动过程】Android 应用启动流程 | Activity 启动流程
文章目录 一.Android 系统启动流程 二.Activity 启动流程 一.Android 系统启动流程 打开 Android 手机电源键后 , 先运行 BootLoader , 然后使用 Boo ...
- Android初级开发笔记-- activity启动模式的学习(1)
第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...
- android 使用浏览器打开指定页面
今天,简单讲讲android里如何使用浏览器打开指定的网页. 之前,我做一个功能时,服务器返回一个url地址,我需要跳转到指定网页.却发现自己不知道怎么做,在网上搜索了资料,最终是解决了问题.这里记录 ...
- Android开发之打开指定APP | 打开APP任意页面的方法
方法一: 此方法只是打开APP,说白了就是类似你手动点击APP图标打开而已 PackageManager packageManager = getPackageManager(); Intent in ...
最新文章
- 利用反射计芯片进行非接触式液位测量
- linux中的网络配置
- 《构建之法》阅读笔记07
- java编程数据溢出问题_Java数据溢出代码详解
- nssl1336-膜拜神牛【LIS】
- 程序集、应用程序配置及App.config和YourSoft.exe.config .
- H5常用拖放事件解析
- ES6精华: 解构运算符 扩展运算符 剩余运算符
- Web.XML配置详细说明
- js提交java后台,双引号转义为amp;quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决
- u8转完看不到菜单_web网页有错误,无法看到操作菜单-用友U8
- soul群聊显示服务器异常,soul群聊状态是什么
- 一文读懂GaussDB(for Mongo)的计算存储分离架构
- android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
- 不安全的文件下载原理
- python搭建web服务器_用Python建立最简单的web服务器
- leetcode(85)最大矩形
- 多质点列车动力学模型
- python小白进阶之路三——七段数码管的绘制+做一个酷炫的倒计时(函数的复用)
- Unity Editor模式编辑属性即时生效