⑴ 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"爛做蘆————允許請求未知來源許可權