Не получается путь к захваченному изображению - PullRequest
0 голосов
/ 10 декабря 2018

Я создаю приложение, в котором я загружаю изображение или файл PDF.Изображение может быть загружено через галерею или захват изображения.При загрузке после захвата изображения он не может найти путь к изображению.

Вот как я открываю намерение камеры

 case 1:
                            File imageFolder = new File(Environment.getExternalStorageDirectory(), "/AFPL");
                            imageFolder.mkdir();
                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyymmdd_hhmmss");
                            String timestamp = simpleDateFormat.format(new Date());
                            File image = new File(imageFolder, timestamp+ ".jpg");
                            //    Uri uriImage = Uri.fromFile(image);
                            if (ContextCompat.checkSelfPermission(ClientDocsUpload.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
                                ActivityCompat.requestPermissions(ClientDocsUpload.this,
                                        new String[]{Manifest.permission.CAMERA,
                                                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                                Manifest.permission.READ_EXTERNAL_STORAGE},
                                        ASK_MULTIPLE_REQUEST);
                            }else {
                                camerauri = FileProvider.getUriForFile(ClientDocsUpload.this, BuildConfig.APPLICATION_ID + ".provider", image);
                                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                intent.putExtra(MediaStore.EXTRA_OUTPUT, camerauri);
                                myBundle.putString("type", type);
                                startActivityForResult(intent, 102);
                            }

                            break;

Это onActivityResult

if (requestCode == 102){
            String[] projection = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(
                    camerauri,
                    projection, null, null, null);
            int column_index_data = cursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToLast();

            String path = cursor.getString(column_index_data);


            files = new File(path.substring(0,path.lastIndexOf("/")),path.substring(path.lastIndexOf("/"),path.length()));
            String type = myBundle.getString("type");
            UploadDocs(files,type,"image");
        }

И еще одна проблема managedQuery() также устарела.

Logcat

W/System.err:     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)
    at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:87)
    at tk.smilestech.afpl.ClientDocsUpload.onActivityResult(ClientDocsUpload.java:417)
 W/System.err:     at android.app.Activity.dispatchActivityResult(Activity.java:6915)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)
 W/System.err:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Рассматривая ваш комментарий, я пишу, и это работает, спасибо.@Mike M.

      case 1:
                            File imageFolder = new File(Environment.getExternalStorageDirectory(), "/AFPL");
                            imageFolder.mkdir();
                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyymmdd_hhmmss");
                            String timestamp = simpleDateFormat.format(new Date());
                            image = new File(imageFolder, timestamp+ ".jpg");
                            //    Uri uriImage = Uri.fromFile(image);
                            if (ContextCompat.checkSelfPermission(ClientDocsUpload.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
                                ActivityCompat.requestPermissions(ClientDocsUpload.this,
                                        new String[]{Manifest.permission.CAMERA,
                                                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                                Manifest.permission.READ_EXTERNAL_STORAGE},
                                        ASK_MULTIPLE_REQUEST);
                            }else {
                                camerauri = FileProvider.getUriForFile(ClientDocsUpload.this, BuildConfig.APPLICATION_ID + ".provider", image);
                                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                intent.putExtra(MediaStore.EXTRA_OUTPUT, camerauri);
                                myBundle.putString("type", type);
                                startActivityForResult(intent, 102);
                            }

                            break;

onActivityResult

files = image;
String type = myBundle.getString("type");
UploadDocs(files,type,"image");
0 голосов
/ 10 декабря 2018

Вы можете просто получить абсолютный путь к изображению, позвонив:

image.getAbsolutePath();

Затем вы можете сохранить этот путь в своем намерении и работать с ним в onActivityResult

...