import android.app.Activity; //导入方法依赖的package包/类
/**
* 拍照
*/
public static String capture(Activity activity, int requestCode) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String picName = null;
if (cameraIntent.resolveActivity(activity.getPackageManager()) != null) {
if (BaseConfig.sSDCardExist) {
picName = Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + Environment.DIRECTORY_DCIM + File.separator +
"Camera" + File.separator + activity.getString(R.string.app_name) +
"_" + System.currentTimeMillis() + ".jpg";
} else {
picName = activity.getCacheDir().getPath() + File.separator +
activity.getString(R.string.app_name) + "_" + System.currentTimeMillis() + ".jpg";
}
File photoFile = new File(picName);
// FileUtils.createFile(photoFile);
Uri uri = FileProvider.getUriForFile(activity,
App.getInstance().getApplicationId() + ".provider", photoFile);
List resInfoList = activity.getPackageManager()
.queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION
| Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
activity.startActivityForResult(cameraIntent, requestCode);
} else {
AppToast.showToast(R.string.open_camera_failure);
}
return picName;
}