Не удается получить изображение из Dropbox, книги
Я могу использовать следующий код, чтобы получить изображение из Dropbox, он открывает Droxbox и может выбрать и загрузить изображение. Однако проблема заключается в том, что загруженное изображение не может быть показано на ImageView. Пожалуйста, помогите, спасибо.
Если мой метод не работает, пожалуйста, предложите другие способы, которые я могу использовать для получения изображения из dropbox в imageview. Спасибо.
Что я уже пробовал:
Code: getImage Image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub List<String> data= new ArrayList<String>(); data.add("Import from local device."); data.add("Take camera image."); AdapterGetImage adapter = new AdapterGetImage(CropImageActivity.this); adapter.setData(data); new AlertDialog.Builder(CropImageActivity.this).setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (which==0) { final Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select File"),GALLERY_CHOOSER_INTENT); } else if(which==1) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveActivity(getPackageManager()) !=null) { File photoFile = null; try{ photoFile = createImageFile(); } catch (IOException ex) { ex.printStackTrace(); } if (photoFile !=null) { Uri photoURI = FileProvider.getUriForFile(CropImageActivity.this, "fileprovider",photoFile); intent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI); startActivityForResult(intent,CAMERA_IMAGE); } } } } }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setCancelable(false) .show(); });
Код: получить путь к изображению
public static String getPath(final Context context, final Uri uri) { // check here to KITKAT or new version final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if (isExternalStorageDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; if ("primary".equalsIgnoreCase(type)) { return Environment.getExternalStorageDirectory() + "/" + split[1]; } } // DownloadsProvider else if (isDownloadsDocument(uri)) { final String id = DocumentsContract.getDocumentId(uri); final Uri contentUri = ContentUris.withAppendedId( Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); return getDataColumn(context, contentUri, null, null); } // MediaProvider else if (isMediaDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; Uri contentUri = null; if ("image".equals(type)) { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("video".equals(type)) { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("audio".equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } final String selection = "_id=?"; final String[] selectionArgs = new String[] { split[1] }; return getDataColumn(context, contentUri, selection, selectionArgs); } } // MediaStore (and general) else if ("content".equalsIgnoreCase(uri.getScheme())) { // Return the remote address if (isGooglePhotosUri(uri)) return uri.getLastPathSegment(); return getDataColumn(context, uri, null, null); } // File else if ("file".equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); } return null; }
Код: результат деятельности
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { try { if (requestCode == GALLERY_CHOOSER_INTENT) { if (null == data) return; String selectedImagePath; Uri selectedImageUri = data.getData(); //MEDIA GALLERY selectedImagePath = getPath(getApplicationContext(), selectedImageUri); cropImageView.requestLayout(); LoadPicture(selectedImagePath); Toast.makeText(this,"uri" +selectedImagePath,Toast.LENGTH_LONG).show(); } } catch (Throwable ex) { AlertDialog.Builder builder = new AlertDialog.Builder(ImageActivity.this); builder.setTitle("Error:"); builder.setMessage("We apologize for the inconvenience caused, data" +data.getData() +"\n" +"\n" +ex.toString()) .setCancelable(false) .setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Intent goToStart = new Intent( CropImageActivity.this, HomeActivity.class); goToStart .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(goToStart); } }); AlertDialog alert = builder.create(); alert.show(); } }
David Crow
Образ есть образ, независимо от того, откуда он пришел. Если вы знаете, что изображение было успешно загружено, или если ваш код "показать изображение" может отображать другие произвольные изображения, существующие на вашем устройстве, Dropbox можно удалить из уравнения. Сделайте все возможное, чтобы устранить ненужные вещи, и сосредоточьтесь на том, что у вас осталось.