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();
        }
    }
}