⑴ android 用AlertDialog启用相机权限的代码怎么写啊
/**
* @Description 调用系统相机照相,获取原图像
* @param activity 就是你的mainactivity
* @param dir 拍照后保存在本地的图片路径
* @param filename 图片的名称
* @param cmd 返回的requestCode
* @return void
*/
public static boolean takePhoto(final Activity activity, final String dir,
final String filename, final int cmd) {
String filePath = dir + filename;
// final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Log.d("test", "MediaStore.ACTION_IMAGE_CAPTURE"
+ android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE == null ? "android.media.action.IMAGE_CAPTURE"
: android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final File cameraDir = new File(dir);
if (!cameraDir.exists()) {
// return false;
cameraDir.mkdirs();
}
final File file = new File(filePath);
final Uri outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
try {
activity.startActivityForResult(intent, cmd);
} catch (final ActivityNotFoundException e) {
return false;
}
return true;
}
然后在你的onactivityforresult方法里写:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case PHOTOGRAPH://拍照
if (resultCode == RESULT_OK) {
String url = FileHelper.Get_SDCardPath() + Constant.HHXH_IMGDIR
+ BitmapUtil.tempPhoto;//图片路径,和你前面调用相册时设的路径一样
Bitmap bitmap = BitmapUtil
.extractThumbNail(url, 480, 320, true);//这里是根据本地路径获取图片并压缩的,这个我写的代码比较多就不上传了
findviewbyid(R.id.imgPhoto).setImageBitmap(bitmap);
}
}
}
⑵ Android WebView 调用系统拍照和相册
由于业务需要,APP内嵌H5,需要调去系统相册和拍照,网上找了点资料,整理一下,供大家参考:
private static final int REQUEST_CAMERA =1;
private static final int REQUEST_CHOOSE =2;
private ValueCallbackmUploadMessage;
private ;
private UricameraUri;
//5.0以后的方法
webView.setWebChromeClient(new WebChromeClient() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {
if (mUploadMessagesAboveL !=null) {
mUploadMessagesAboveL.onReceiveValue(null);
mUploadMessagesAboveL =null;
}else {
mUploadMessagesAboveL = filePathCallback;
selectImage();
}
return true;
}
});
//选择图片和拍照,对应的string文件,可以自己写死:拍照,相册,取消
private void selectImage() {
ActionSheet.createBuilder(this, getSupportFragmentManager()).
setOtherButtonTitles(new String[]{getResources().getString(R.string.common_tip_photos), getResources().getString(R.string.common_picture)}).
setCancelButtonTitle(getResources().getString(R.string.common_cancel)).setCancelableOnTouchOutside(true).setListener(new ActionSheet.ActionSheetListener() {
public void onDismiss(ActionSheet actionSheet, boolean isCancel) {
if (mUploadMessage !=null) {
mUploadMessage.onReceiveValue(null);
mUploadMessage =null;
}
if (mUploadMessagesAboveL !=null) {
mUploadMessagesAboveL.onReceiveValue(null);
mUploadMessagesAboveL =null;
}
actionSheet.dismiss();
}
@RequiresApi(api = Build.VERSION_CODES.M)
public void onOtherButtonClick(ActionSheet actionSheet, int index) {
switch (index) {
case 0:
chosePicture();
break;
case 1:
setRequestCamera();
}
}
}).show();
}
//拍照,添加权限申请 这个可以自己写下,我这边是项目中写好的,直接拿过来用了
public void setRequestCamera() {
permissionsBuilder =new YXTPermissionsBuilder.Builder(this)
.setOnGrantedListener((requestCode, perms) -> {
openCamera();
})
.setRationale4NeverAskAgain(LanguageUtils.isEnglish() ? String.format(getString(R.string.permission_tips), getString(R.string.common_camera), getString(R.string.app_name), getString(R.string.app_name)) :
String.format(getString(R.string.permission_tips), getString(R.string.app_name), getString(R.string.common_camera), getString(R.string.app_name)))
//必需
.setRequestCode(ConstantsData.GET_CAMERA)
.build();
permissionsBuilder.requestPermissions(Manifest.permission.CAMERA);
}
/**
* 本地相册选择图片
*/
private void chosePicture() {
Intent innerIntent =new Intent(Intent.ACTION_GET_CONTENT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
innerIntent.setType("image/*");
Intent wrapperIntent = Intent.createChooser(innerIntent, null);
startActivityForResult(wrapperIntent, REQUEST_CHOOSE);
}
/**
* 打开照相机
*/
private void openCamera() {
Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String imagePaths = Environment.getExternalStorageDirectory().getPath() +"/pbccrc/Images/" + (System.currentTimeMillis() +".jpg");
// 必须确保文件夹路径存在,否则拍照后无法完成回调
File vFile =new File(imagePaths);
if (!vFile.exists()) {
File vDirPath = vFile.getParentFile();
vDirPath.mkdirs();
}else {
if (vFile.exists()) {
vFile.delete();
}
}
cameraUri = FileProvider.getUriForFile(
this,
getPackageName() +".fileprovider",
vFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri);
startActivityForResult(intent, REQUEST_CAMERA);
}
/**
* 选择照片后结束
*
* @param data
*/
private UriafterChosePic(Intent data) {
if (data !=null) {
final String path = data.getData().getPath();
if (path !=null && (path.endsWith(".png") || path.endsWith(".PNG") || path.endsWith(".jpg") || path.endsWith(".JPG"))) {
return data.getData();
}else {
Toast.makeText(this, "上传的图片仅支持png或jpg格式", Toast.LENGTH_SHORT).show();
}
}
return null;
}
/**
* 返回文件选择
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (mUploadMessagesAboveL !=null) {
onActivityResultAboveL(requestCode, resultCode, intent);
}
if (mUploadMessage ==null)return;
Uri uri =null;
if (requestCode ==REQUEST_CAMERA && resultCode ==RESULT_OK) {
uri =cameraUri;
Log.e("onActivityResult: " + uri.toString());
}
if (requestCode ==REQUEST_CHOOSE && resultCode ==RESULT_OK) {
uri = afterChosePic(intent);
}
mUploadMessage.onReceiveValue(uri);
mUploadMessage =null;
super.onActivityResult(requestCode, resultCode, intent);
}
/**
* 5.0以后机型 返回文件选择
*
* @param requestCode
* @param resultCode
* @param data
*/
private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {
Uri[] results =null;
if (requestCode ==REQUEST_CAMERA && resultCode ==RESULT_OK) {
results =new Uri[]{cameraUri};
}
if (requestCode ==REQUEST_CHOOSE && resultCode ==RESULT_OK) {
if (data !=null) {
String dataString = data.getDataString();
if (dataString !=null)
results =new Uri[]{Uri.parse(dataString)};
}
}
mUploadMessagesAboveL.onReceiveValue(results);
mUploadMessagesAboveL =null;
return;
}
基本都可以拿去用了,希望有帮助
⑶ 手机里相册权限在哪开启
这里以苹果XS手机为例:
1、在自己的手机桌面上找到“设置”并打开“设置”。
⑷ 怎么从相册选择需要读取外置存储权限图片
1. 首先,需要在AndroidManifest.xml文件中添加读取外置存储权限:
```java
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
```
2. 然后,使用Intent调用系统相册选择图片:纤宴
```java Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQUEST_CODE); ```
3、最后,明竖者在onActivityResult()方法激薯中获取返回的数据并显示出来。
⑸ android相册移动照片权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
应该要仔裤加上 对存储设备的读写权限, 有拍照么基困 ,有的话还得加上拍照调用硬件camera 的权限念锋简
⑹ android怎么调用系统自带的图库打开指定目录的相册
//使用Intent来调滑脊用相信则渗册盯哗
Intent intent=new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
//使用startActivityForResult来调用相册界面startActivityForResult(intent, REQ_PICK_PICTURE_FROM_GALLERY);
⑺ android中怎么读取系统相册
Intent intent= new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
表示调用相册选择图片
如果你要选择文件:
Intent intent= new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "file/*");
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
⑻ android打开本地照相机需要什么权限
部分手扮消机支厅判知持修改应用程序权限:智能管理器-应用程序权限管理/应用程序许可-点击应用程序/权限-滑动对应开关即可设置。
注:部分内置软件权限为系统默认冲答,无法更改。
⑼ android studio如何调用系统相册
在Android Studio中,可以使用Intent调用含哗握系统相册。以下是具体步骤:
1. 在你的Android Studio项目中创建一个Button或ImageView,用于触发打开相册的事件。
2. 在Button或ImageView的OnClick事件中添加以下代码:
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK_IMAGE_REQUEST);
其中,PICK_IMAGE_REQUEST是一个整数常量,用于在Activity返回结果时进行识别。
3. 在Activity中添加以下代码,以处理从相册返回的结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri uri = data.getData();
// 使用uri加载图片
}
}
在这个方法中,芦衫我们检查requestCode是否等于PICK_IMAGE_REQUEST,resultCode是否等于RESULT_OK,以及data和data.getData()是否不为null。如果这些条件都满足,我们就可以使用data.getData()方法获取从相册中选择的图片的Uri,并使用这个Uri加载图片。
注意:在使用打开谈庆相册的Intent时,需要在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
这个权限用于读取存储在设备上的图片。
⑽ Android权限目录
android:name="android.permission.INTERNET"————访问网络
android:name="饥带android.permission.ACCESS_NETWORK_STATE"————获取网络状态
android:name="android.permission.ACCESS_WIFI_STATE"————获取WiFi状态
android:name="android.permission.WRITE_EXTRNAL_STORAGE"————写入外部储存
android:name="android.permission.READ_EXTRNAL_STORAGE"——胡弊——读取外部储存
android:name="android.permission.WRITE_EXTRNAL_STORAGE"————写入外部储存
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEM"
tools:ignore="ProtectedPermission"————挂载卸载文件系统
android:name="android.permission.READ_PHONE_STATE"————读取电话状态
android:name="android.permission.VIBRATE"————允许震动
android:name="android.permission.WAKE_LOCK"————允许后台运行
android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermission"————读取系统文件
android:name="android.permission.CAMERA"————调用相机权限
android:name="android.permission.CALL_PHONE"————调用打电话权限
android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER"————指纹识别
android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"————
android:name="com.samsung.android.providers.context.permission.EXPAND_STATUS_BAR"————通知栏伸缩
android:name="android.permission.REQUEST_INSTALL_PACKGES"烂做芦————允许请求未知来源权限