activity 跳转
普通的activity 跳转 可以通过startActivity(...) 来实现
但是 如果不同activity呢?
比如:我已经完成一个组件开发- 文件浏览器 即:能够访问android设备上所有文件及目录 且支持子目录查询 即:
若目标是路径 点击之 表示查询该路径下所有文件/目录 反之 若目标是文件 则返回该文件路径名
但是:现有一问题 即:我开发的音乐播放器 视频播放器 都要集成该功能 我不能分别把该功能 添加到这两个应用中去 因为:
所以 不同app间activity 跳转 就显得有用武之地了
鉴于 文件浏览器 已经开发过 更多细节 参考这篇文章:http://griffinshi.iteye.com/blog/576850
所以今天不打算继续讨论该问题 而仅仅以此为例 说明
1. 假设 文件浏览器 Activity name : FileBrowser 且定义其AndroidManifest.xnl 属性为:
<activity android:name=".DestActivity" android:label="@string/app_name"> <intent-filter> <action android:name="org.android.utility.file.browser" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
从而得知: action="org.android.utility.file.browser" category="android.intent.category.DEFAULT"
2. 在需要该功能的母体Activity中 通过一下代码跳转至:FileBrowser
public void sendFileBrowser(){
Intent it = new Intent();
it.setAction("org.android.utility.file.browser");
startActivityForResult(it);
}
3. 其实以上皆简单 显得这篇很鸡肋 但是问题出在此处
<category android:name="android.intent.category.DEFAULT" />
如果没有此 会导致跳转失败!!!!!! 切记
细心的人 会问:但是 如果两个activity 处于同一app 就不会有这样的问题
> 是的 关于原因 目前也解释不清楚 但是 仍然发现一些奇怪信息:
1. Intent.java 源代码 有如下一段注释:
即:
该Activity 有如此属性 方可被startActivity() 发现并使用之
"android.intent.category.DEFAULT"
所以个人建议: activity 都加上该属性 以防被别的app引用到!!!