Javascript 画廊图像捕获不返回数据-在某些设备上
画廊图像捕获不返回数据-在某些设备上 以及:Javascript 画廊图像捕获不返回数据-在某些设备上,javascript,java,android,c,arrays,Javascript,Java,Android,C,Arrays,画廊图像捕获不返回数据-在某些设备上 以及: @覆盖 受保护的void onActivityResult(int请求代码、int结果代码、意图数据){ super.onActivityResult(请求代码、结果代码、数据); if(requestCode==2){ if(data.getData()!=null){ Uri mimageri=data.getData(); 字符串imagePath=GetPathToImage(上下文,mimageri); Log.v(“Log_标签”,“hg
@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==2){
if(data.getData()!=null){
Uri mimageri=data.getData();
字符串imagePath=GetPathToImage(上下文,mimageri);
Log.v(“Log_标签”,“hguyhuu”+图像路径);
位图=(BitmapFactory.decodeFile(imagePath));
linearLayout.setVisibility(View.VISIBLE);
relativeLayout.setVisibility(View.GONE);
设置图像位图(位图);
}否则{
if(data.getClipData()!=null){
ClipData mClipData=data.getClipData();
mArrayUri=newarraylist();
gridAdapter=新的GridViewAdapter(this,R.layout.grid_single,mArrayUri);
setAdapter(gridAdapter);
对于(inti=0;i,这里的很多内容都是不正确的
在操作\u图像\u捕获方面
:
Uri.fromFile()
将无法在Android 7.0+上运行,一旦您将targetSdkVersion提升到24或更高,因为您将抛出FileUriExposedException
- 您正在忽略此操作在onActivityResult()中的结果
就ACTION\u GET\u CONTENT
而言,GetPathToImage()
是完全错误的。如果您从MediaStore
获取Uri
,甚至是得到的“路径”,它充其量也会起作用可能无法使用。请不要发布权限代码。不要发布拍照代码。或对话框代码。只发布相关代码。给出问题的代码。请编辑。
private void selectImage() {
final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" };
AlertDialog.Builder builder = new AlertDialog.Builder(ConformComplain.this);
builder.setTitle("Add Photo!");
builder.setItems(options, new DialogInterface.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
@Override
public void onClick(DialogInterface dialog, int item) {
if(!marshMallowPermission.checkPermissionForCamera()){
marshMallowPermission.requestPermissionForCamera();
}else {
if (!marshMallowPermission.checkPermissionForExternalStorage()){
marshMallowPermission.requestPermissionForExternalStorage();
}
else if (options[item].equals("Take Photo"))
{
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 1);
}
else if (options[item].equals("Choose from Gallery"))
{
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "android.intent.action.SEND_MULTIPLE"), 2);
}
else if (options[item].equals("Cancel")) {
dialog.dismiss();
}
}
}
});
builder.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2) {
if(data.getData()!=null){
Uri mImageUri=data.getData();
String imagePath = GetPathToImage(context, mImageUri);
Log.v("LOG_TAG", "hguyhuu "+ imagePath);
bitmap = (BitmapFactory.decodeFile(imagePath));
linearLayout.setVisibility(View.VISIBLE);
relativeLayout.setVisibility(View.GONE);
viewImage.setImageBitmap(bitmap);
}else{
if(data.getClipData()!=null){
ClipData mClipData=data.getClipData();
mArrayUri=new ArrayList<String>();
gridAdapter = new GridViewAdapter(this, R.layout.grid_single,mArrayUri);
gridView.setAdapter(gridAdapter);
for(int i=0;i<mClipData.getItemCount();i++){
ClipData.Item item = mClipData.getItemAt(i);
Uri uri = item.getUri();
Log.e(TAG, "onActivityResult: jnj"+uri );
String path = GetPathToImage(context,uri);
Log.e(TAG, "onActivityResult: "+path );
mArrayUri.add(path);
}
linearLayout.setVisibility(View.GONE);
relativeLayout.setVisibility(View.VISIBLE);
}
}
}
}
public String GetPathToImage(Context context, Uri uri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(uri, proj, null, null, null);
Log.e(TAG, "GetPathToImage: "+cursor );
assert cursor != null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}