日报2015/10/14(极客学院安卓视频学习)
来源:互联网 发布:凌虚剑淘宝 编辑:程序博客网 时间:2024/05/23 22:18
昨天po主去看琅琊榜了,摸鱼了一整天
隐式 Intent
之前显示启动activityB的时候是通过
startActivity(new Intent(A.this,B.class));
其中,B.class就是显式启动的特点,这种方式智能启动本应用中的其他activity,因为别的应用里的activity的class是找不到的。
这时候就比较适合使用隐式启动了
要启动的是B,那么在B的activity配置里面,通过Intent-Filter来配置
<activity android:name=".B" android:label="B"> <intent-filter> <action android:name="aty_B" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
category指定B用什么形式呈现,DEFAULT就是以Activity形式呈现
action就是一串字符串,这里自己写一个简单的aty_B,然后在java代码里面直接
startActivity(new Intent("aty_B"));
就可以启动B了
在Android studio里面,新建一个module,叫app2,然后从app2里面启动app里面的B试试看。
同样在app2的MainActivity中
startActivity(new Intent("aty_B"));
可以启动app1里面的B,这样就实现了跨应用启动activity了。
如果不想被别的应用启动的话,可以如下配置
activity android:exported="false"
Q:不过po主自己测试了以后发现还是能访问,不知道为啥
百度了一下,http://blog.csdn.net/lvxiangan/article/details/46859349
这里说
同时,一定要注意的是, 非公开的Activity不能设置intent-filter,因为,如果假设在同一机器上,有另外一个app有同样的intent-filter的话, 调用该Activity的intent会唤醒android的选择画面, 让你选择使用那个app接受该intent。这样就会事实上绕过了非公开的设置。
但是按照视频中的步骤的话,得不到它那种结果,头疼。
Intent 过滤器相关选项
如果两个activity配置一样的action字符串呢?
例如B、C两个activity
<activity android:name=".B" android:label="B"> <intent-filter> <action android:name="com.jackie.courseintent.aty_B" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".C" android:label="C"> <intent-filter> <action android:name="com.jackie.courseintent.aty_B" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
这时候再按照之前的方法,在app2的MainActivity中
startActivity(new Intent("com.jackie.courseintent.aty_B"));
关于data配置:
给C配置一下
<data android:scheme="C"/>
然后启动:
startActivity(new Intent("com.jackie.courseintent.aty_B",Uri.parse("C://hello")));
此时:
不会出现上面的选择B还是C的选项,而是直接跳到了C
如果将Activity的data属性里面,设置scheme为http,那么这个Activity就可以相应http协议的请求
<activity android:name=".LocalAty" android:label="@string/title_activity_local_aty"> <intent-filter> <category android:name="android.intent.category.APP_BROWSER" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http"/> <action android:name="android.intent.action.VIEW" /> </intent-filter> </activity>
Intent intent=new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);
而且如果绑定了服务,解绑了以后,服务会直接destroy,此时重新绑定的话,会从create开始新的生命周期,也就是说,在Service的生命周期里面,只有onStart可以被反复执行,其他的行为在一个生命周期里只执行一次
- 日报2015/10/14(极客学院安卓视频学习)
- 日报2015/10/11(极客学院安卓视频学习)
- 日报2015/10/12(极客学院安卓视频学习)
- 日报2015/10/15(极客学院安卓视频学习)
- 日报2015/10/16(极客学院安卓视频学习)
- 日报2015/10/20(极客学院安卓视频学习)
- 日报2015/10/21(极客学院安卓视频学习)
- 日报2015/10/26(极客学院安卓视频学习)
- 日报2015/10/28(极客学院安卓视频学习)
- 日报2015/10/29(极客学院安卓视频学习)
- 日报2015/10/30(极客学院安卓视频学习)
- 极客学院安卓学习概要
- 极客学院安卓视频零散笔记总结
- 安卓学习笔记汇总----极客学院安卓教学视频观看所做的笔记和自己的理解
- 动脑学院安卓视频资料领取
- 动脑学院安卓视频资料分享
- 【备忘】极客学院-Java语言学习视频下载
- 深入安卓JNI,INIT,ZYGOTE——极客学院学习笔记
- Hashset实现原理
- POJ 1065 Wooden Sticks 贪心
- Android程序完全退出的三种方法
- Java GC基本算法
- HDU 1281 棋盘游戏 (二分图+枚举每点是否为匹配关键)
- 日报2015/10/14(极客学院安卓视频学习)
- 操作RPM和DEB包的PYTHON模块
- 阿里云云服务器硬盘分区及挂载
- 通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明。
- LINUX下通过C++访问SQLSERVER数据库
- Saving James Bond - Easy Version
- iOS8下的远程推送
- 人脸识别---排序测度特征(Ordinal Measures)
- C++Primer学习:智能指针与动态内存(2)