打开文件
这里只介绍最基本的intent打开文件的方法
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri,"image/jpeg");
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
其中的第二行需要设置文件类型 也就是这里的image/jpeg
第三行再打开activity之前,需要确认是否有程序能够执行这个动作,
因为如果没有可以打开这个文件类型的程序,会导致app报错崩溃。
这就是最基本的方法。除此以外还可以添加其他功能,例如检索所有能打开此文件的app,然后手动选择用哪个打开。
Intent intentChooser = Intent.createChooser(intent,"chooser");
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intentChooser);
}
如上,这个新的intent
是快捷创建了一个chooser,然后在startactivity
里面打开这个chooser
就可以手动选择用哪个开打刚才的目标了
如果没有设置intent的action,那么就会显示所有能对这个文件类型进行操作的activity。
进一步
还可以获得每个可以打开目标的activity,然后自己创建一个view来选择
//代码以后再写
public List queryIntentActivities (Intent intent, int flags)
这个方法可以获得一个列表,里面有包含可以执行这个intent的每个activity的信息。
(返回的示resolveInfo列表,resolveInfo.activityInfo就是需要的activity信息)
包括activity的label就是标签,icon就是图标,还有packageName和name,通过后面这两个信息就可以用显示方式打开这个activity了intent.setClassName(packageName,className)
在设置intent的时候需要设置目标activity所在的context,通常调用所在app的其他activity的时候
会直接设置成this,但是调用其他app的activity的时候需要设置context,这里的便利方法
可以直接设置packageName.
get
new intent(context,class)
里面的第一个参数是被调用方的context,不是调用方。