java.lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 1888, result = -1, data = null} в действие - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу показать свое изображение в виде изображения после клика, но я не знаю, почему возникает эта ошибка, и я много искал по ней, но не смог найти решение этой проблемы, и я попытался реализовать код после просмотра решения, но ононе работает, так что я в замешательстве, что происходит не так. Это мой код:

package kmsg.com.onetouch.activity;

 public class UploadDocumentActivity extends AppCompatActivity {

JSONParser parser;
Bitmap photo;
ImageView mImgDocument;
Button mBtnBill,mBtnPres,mBtnGetFile,mBtnUpload;
EditText mEtBillDate,mEtbillValue,mEtStoreRefID,mEtDoctorID;
LinearLayout mBillLinear,mPresLinear;
String mBillDate,mBillValue,mStoreRefID,mDoctorID;
boolean flag= true;
private static final int CAMERA_REQUEST = 1888;
private static final int MY_CAMERA_PERMISSION_CODE = 100;
File imageFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_upload_document);
    parser = new JSONParser(this);

    init();

    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());
}

private void init() {
    mImgDocument=(ImageView)findViewById(R.id.imgDocument);
    mBtnBill=(Button)findViewById(R.id.btnBill);
    mBtnPres=(Button)findViewById(R.id.btnPres);
    mBtnGetFile=(Button)findViewById(R.id.btnGetFile);
    mBtnUpload=(Button)findViewById(R.id.btnUpload);
    mEtBillDate=(EditText)findViewById(R.id.et_billDate);
    mEtbillValue=(EditText)findViewById(R.id.et_billValue);
    mEtStoreRefID=(EditText)findViewById(R.id.et_refID);
    mEtDoctorID=(EditText)findViewById(R.id.et_doctorID);
    mBillLinear=(LinearLayout)findViewById(R.id.bill_linear);
    mPresLinear=(LinearLayout)findViewById(R.id.prescription_linear);
}

public void getBill(View view) {
    flag= true;
    mPresLinear.setVisibility(View.GONE);
    mBillLinear.setVisibility(View.VISIBLE);
}

public void getPrescription(View view) {
    flag=false;
    mBillLinear.setVisibility(View.GONE);
    mPresLinear.setVisibility(View.VISIBLE);
}

public void getFile(View view) {
    if (ContextCompat.checkSelfPermission(UploadDocumentActivity.this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(UploadDocumentActivity.this,new String[]{Manifest.permission.CAMERA},
                MY_CAMERA_PERMISSION_CODE);
    } else {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File pictureDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        String pictureNm = getPictureName();
        imageFile = new File(pictureDirectory , pictureNm);
        Uri pictureUri = Uri.fromFile(imageFile);
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,pictureUri);
        cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);

    }
}

/* public void getFile(View view) {
    if (ContextCompat.checkSelfPermission(UploadDocumentActivity.this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(UploadDocumentActivity.this,new String[]{Manifest.permission.CAMERA},
                MY_CAMERA_PERMISSION_CODE);
    } else {


        Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File dir=
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
        String pictureNm = getPictureName();

        File output=new File(dir, pictureNm);
        i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
        startActivityForResult(i, CAMERA_REQUEST);

    }
}

  */

private String  getPictureName(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
    String timestamp = sdf.format(new Date());
    return "paymentProof" + timestamp + ".jpg";
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == MY_CAMERA_PERMISSION_CODE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
            Intent cameraIntent = new
                    Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        } else {
            Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);
    if(resultCode != RESULT_CANCELED){
        if (requestCode == CAMERA_REQUEST) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            mImgDocument.setImageBitmap(photo);
        }
    }
}

private boolean validateFormForBill() {

    mBillDate = mEtBillDate.getText().toString().trim();
    mBillValue = mEtbillValue.getText().toString().trim();
    mStoreRefID = mEtStoreRefID.getText().toString().trim();
    mEtBillDate.setError(null);
    mEtbillValue.setError(null);
    mEtStoreRefID.setError(null);

    if (TextUtils.isEmpty(mBillDate.trim())) {
        mEtBillDate.setError("Bill Date cannot be blank");
        return false;
    }

    if (TextUtils.isEmpty(mBillValue.trim())) {
        mEtbillValue.setError("Bill Value cannot be blank");
        return false;
    }

    if (TextUtils.isEmpty(mStoreRefID.trim())) {
        mEtStoreRefID.setError("Ref ID cannot be blank");
        return false;
    }
    return true;
}

private boolean validateFormForPres() {


    mDoctorID = mEtDoctorID.getText().toString().trim();
    mEtDoctorID.setError(null);

    if (TextUtils.isEmpty(mDoctorID.trim())) {
        mEtDoctorID.setError("Doctor ID cannot be blank");
        return false;
    }
    return true;
}




public void uploadDocument(View view) {
    if (UtilityServices.checkInternetConnection(UploadDocumentActivity.this)) {
        if (flag) {
            if (UploadDocumentActivity.this.validateFormForBill()) {
                new UploadBill().execute();
            }
        } else {
            if (UploadDocumentActivity.this.validateFormForPres()) {
               // new UploadPres().execute();
            }
        }
    }else {
        Toast.makeText(this, R.string.no_internet, Toast.LENGTH_SHORT).show();
    }
}


private class UploadBill extends AsyncTask<String,String,String> {

    String status= null;
    String msg = null;
    JSONObject responseObject;
    @Override
    protected String doInBackground(String... strings) {
        List<Part> partList = new ArrayList<>();
        partList.add(new StringPart("billAmt", mBillValue));
        partList.add(new StringPart("billDate", mBillDate));
        partList.add(new StringPart("storeId", mStoreRefID));
        System.out.println("Data"+mBillDate+mBillValue+mStoreRefID);
        partList.add(new StringPart("userMobile", SharedPrefManager.getString("mobile")));
       /* try {
            partList.add(new FilePart("file", imageFile));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }*/
        String url = Constants.UPLOAD_BILL;
        System.out.println("partList:"+partList);
        responseObject = parser.makeHttpRequestWithMultipart(url, partList);
        try {
            // Simulate network access.
            if (responseObject != null) {
                System.out.println("responseObject: " + responseObject.toString());
                try {
                    status = responseObject.getString(Constants.SVC_STATUS);
                    return status;
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            if (responseObject.has(Constants.SVC_MSG)) {
                try {
                    msg = responseObject.getString(Constants.SVC_MSG);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return status;
            }
            return "";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(final String success) {
        super.onPostExecute(success);

        if (success != null) {
            System.out.println(Constants.STATUS_SUCCESS);
            if (Constants.STATUS_SUCCESS.equals(success)) {
                System.out.println("Successful Svc Call:"+ "post object task details called");
                Toast.makeText(UploadDocumentActivity.this, "Successful Svc Call:"+ "post object task details called", Toast.LENGTH_LONG).show();
            } else {
                System.out.println(success);
                try {
                    AlertDialog alertDialog = new AlertDialog.Builder(UploadDocumentActivity.this).create();

                    alertDialog.setTitle("Info");
                    alertDialog.setMessage(responseObject.getString(Constants.SVC_MSG));
                    alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
                    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                    alertDialog.show();
                }
                catch(Exception e)
                {
                    UtilityServices.appendLog("Show Dialog: "+e.getMessage());
                }
            }
        } else {
            System.out.println("svcstatus is null");
        }
    }
}
private class UploadPres extends AsyncTask<String,String,String> {

    String status= null;
    String msg = null;
    JSONObject responseObject;
    @Override
    protected String doInBackground(String... strings) {
        List<Part> partList = new ArrayList<>();
        partList.add(new StringPart("storeId", mDoctorID));
        partList.add(new StringPart("userMobile", SharedPrefManager.getString("mobile")+""));
        try {
            partList.add(new FilePart("file", imageFile));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String url = Constants.UPLOAD_PRESCRIPTION;
        System.out.println("partList:"+partList);
        responseObject = parser.makeHttpRequestWithMultipart(url, partList);
        try {
            // Simulate network access.
            if (responseObject != null) {
                System.out.println("responseObject: " + responseObject.toString());
                try {
                    status = responseObject.getString(Constants.SVC_STATUS);
                    return status;
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            if (responseObject.has(Constants.SVC_MSG)) {
                try {
                    msg = responseObject.getString(Constants.SVC_MSG);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return status;
            }
            return "";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(final String success) {
        super.onPostExecute(success);

        if (success != null) {
            System.out.println(Constants.STATUS_SUCCESS);
            if (Constants.STATUS_SUCCESS.equals(success)) {
                System.out.println("Successful Svc Call:"+ "post object task details called");
                Toast.makeText(UploadDocumentActivity.this, "Successful Svc Call:"+ "post object task details called", Toast.LENGTH_LONG).show();
            } else {
                System.out.println(success);
                try {
                    AlertDialog alertDialog = new AlertDialog.Builder(UploadDocumentActivity.this).create();

                    alertDialog.setTitle("Info");
                    alertDialog.setMessage(responseObject.getString(Constants.SVC_MSG));
                    alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
                    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                    alertDialog.show();
                }
                catch(Exception e)
                {
                    UtilityServices.appendLog("Show Dialog: "+e.getMessage());
                }
            }
        } else {
            System.out.println("svcstatus is null");
        }
    }
}
}

Это мой класс, и я пытаюсь захватить изображение по нажатию кнопки, а затем сохранить в каталоге после этого шоув imageview, а затем хотите отправить на сервер, я надеюсь, вы поможете мне, как лучший программист.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

этот вопрос может быть дубликатом этого .

По сути, когда вы передаете файл OutPut намерению, вы не можете читать данные из лишних, вы должны убедиться, что CameraApplication имеет доступ к вашим файлам.Вы получаете это исключение, потому что CameraApplication не может сохранить файл в вашем каталоге, вам нужно добавить поставщика файлов ...

Пожалуйста, сделайте так, чтобы ваш код совпадал с базовой документацией для Android .

0 голосов
/ 21 сентября 2018

Попробуйте

public void getFile(View view) {
    if (ContextCompat.checkSelfPermission(UploadDocumentActivity.this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(UploadDocumentActivity.this,new String[]{Manifest.permission.CAMERA},
                MY_CAMERA_PERMISSION_CODE);
    } else {
       
        
            Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File dir=
                    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
                    String pictureNm = getPictureName();

            File output=new File(dir, pictureNm);
            i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));
            startActivityForResult(cameraIntent, CAMERA_REQUEST);

    }
}
...