-
Notifications
You must be signed in to change notification settings - Fork 0
Home
a247124718 edited this page Dec 22, 2016
·
1 revision
Welcome to the AndroidUsefulProject wiki! 当我们仅仅需要启动系统相机并且拍照片,不需要保存 private void launchCamera() { try{ //获取相机包名 Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ResolveInfo res = mContext.getPackageManager(). resolveActivity(infoIntent, 0); if (res != null) { String packageName=res.activityInfo.packageName; if(packageName.equals("android")) { infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE); res = mContext.getPackageManager(). resolveActivity(infoIntent, 0); if (res != null) packageName=res.activityInfo.packageName; } //启动相机 startApplicationByPackageName(packageName); } } catch(Exception e) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); e.printStackTrace(); }
}
private void startApplicationByPackageName(String packName) {
PackageInfo packageInfo=null;
try{
packageInfo=getPackageManager().getPackageInfo(packName, 0);
}catch(Exception e){
e.printStackTrace();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
}
if(null==packageInfo){
return;
}
Intent resolveIntent=new Intent();
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageInfo.packageName);
List<ResolveInfo> resolveInfoList =getPackageManager().queryIntentActivities(resolveIntent, 0);
if(null==resolveInfoList){
return;
}
Iterator<ResolveInfo> iter=resolveInfoList.iterator();
while(iter.hasNext()){
ResolveInfo resolveInfo=(ResolveInfo) iter.next();
if(null==resolveInfo){
return;
}
String packageName=resolveInfo.activityInfo.packageName;
String className=resolveInfo.activityInfo.name;
Intent intent=new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn=new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
}//while
}//method