参考网站:
http://blog.csdn.net/zuolongsnail/article/details/6574211
Android中activity的调度是以Task为容器,task可以理解为是stack,即栈。调度一个应用程序就是将它所包含的activity放入栈顶,如果要调用另一个时就会将原先的应用程序压入栈中,然后把新的程序的activity放到栈顶。
Intent可以看作是一个传递员,负责将不同的activity连接在一起,告诉系统要从该activity跳转到哪个activity中。
Intent组件介绍:
Flags:设定怎么启动目标Activity,如果该Intent是空的,那么你需要使用addFlags()来进行定义,如果Intent是有内容的,那么你需要使用setFlags()来定义。
参数介绍:
FLAG_ACTIVITY_NEW_TASK
该参数能够让系统将新的activity放入新的Task中,让该activity可以单独完成,而与启动它们的activity无关。
Action:指定Intent的执行动作,例如ACTION_VIEW说明该Intent指向的activity是显示用的。
Data:表示数据(在这里是指uri对应的对象)和MIME类型的作用,与action对应。数据指的是你的Intent是对什么东西进行操作,而MIME则是设定某种拓展名的文件是用那种应用程序来打开。
函数介绍:
setDataAndType(uri, MIME),前一个参数表示intent要操作的数据对象;后者表示该数据是什么类型,用什么应用程序打开。
Android打开文件的各步骤的意义:
public Intent getVideoFileIntent(String param){
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(param) );
intent.setDataAndType(uri, "video/*");
return intent;
}
但我们点击某个文件想要打开该文件的时候,需要使用itent来告诉系统我们的意图。所以需要自己设定一个intent。从第二行代码开始看起,我们对其的标志进行设定,说明该itent操作的对象需要在新的Task中进行,然后我们指定执行动作为显示,之后我们需要告诉系统操作的是什么东西,所以我们将文件变成资源标识符,通过setDataAndType来设置是使用打开video类型的应用程序来打开该文件,最后将intent返回。