Я пытаюсь создать загрузку файлов Android на php-сервер, все работает, за исключением того, что когда я выбираю камеру, чтобы сделать снимок для загрузки, он не получает данные, я перепробовал все, что мог, но не смог заставить его записать. Использую андроид gotev
https://github.com/gotev/android-upload-service для загрузки моего файла.
Я думаю, что моя проблема от onActivityResult
получать данные с камеры, но я не знаю, как это сделать.
private Bitmap bitmap;
private Uri filePath;
private String CAM_MESSAGE;
private ValueCallback<Uri> FILE_MESSAGE;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMAGE_REQUEST_CODE){
if (resultCode == FileUploadActivity.RESULT_OK && data != null && data.getData() != null) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
tvPath.setText("Path: ".concat(getPath(filePath)));
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
} else {
Uri[] camfilePath = null;
if (CAM_MESSAGE != null) {
try {
camfilePath = new Uri[]{Uri.parse(CAM_MESSAGE)};
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), camfilePath);
tvPath.setText("Path: ".concat(getPath(camfilePath)));
imageView.setImageBitmap(bitmap);
//Toast.makeText(getApplicationContext(), "CAM MESSAGE:"+CAM_MESSAGE, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}else{
Toast.makeText(getApplicationContext(), "Empty data", Toast.LENGTH_SHORT).show();
}
}
}else{
Toast.makeText(getApplicationContext(), "Not Request Code", Toast.LENGTH_SHORT).show();
}
}
Мой файл выбора
private void showFileChooser(){
File photoFile = null;
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType(APP_FTYPE);
Intent[] intentArray;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(FileUploadActivity.this.getPackageManager()) != null) {
try {
photoFile = createImage();
takePictureIntent.putExtra("PhotoPath", CAM_MESSAGE);
} catch (IOException ex) {
Log.e(TAG, "Image file creation failed", ex);
}
if (photoFile != null) {
CAM_MESSAGE = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
} else {
takePictureIntent = null;
}
}
if (takePictureIntent != null) {
intentArray = new Intent[]{takePictureIntent};
} else {
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, IMAGE_REQUEST_CODE);
}
Задача ещё не решена.
Других решений пока нет …