android 选择图库 直接跳入图库界面 无选择界面
由于客户的奇芭需求,对此进行
研究:
说一下思路
- 可以使用
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setPackage(xxxx);// xxxx是图库的包名,系统默认的一般是com.android.xx
startActivity(i);
系统默认的会有一个问题
现在Adnroid系统都是定制的所以直接使用原生系统图库的包名的话,会直接崩掉的,因为定制的系统会修改系统图库的包名
- 解决办法就是 首先获取系统的应用,然后获取根据名字来获取图库的包名
/**
* 查询手机内系统应用
* @param context
* @return
*/
public static List<PackageInfo> getAllApps(Context context) {
List<PackageInfo> apps = new ArrayList<PackageInfo>();
PackageManager pManager = context.getPackageManager();
//获取手机内所有应用
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
for (int i = 0; i < paklist.size(); i++) {
PackageInfo pak = (PackageInfo) paklist.get(i);
//判断系统预装的应用程序
if (!((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0)) {
apps.add(pak);
}
}
return apps;
然后根据名字获取包名
PackageManager pManager =TestTuKu.this.getPackageManager();
List<PackageInfo> appList = getAllApps(TestTuKu.this);
for(int i=0;i<appList.size();i++) {
PackageInfo pinfo = appList.get(i);
//set Application Name if(("库").equals(pManager.getApplicationLabel(pinfo.a
pplicationInfo).toString())){
packagename = pinfo.packageName;
}
最后在调用
Intent i = new
Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setPackage(packagename );
startActivity(i);
ok!