Получение пути для загрузки изображения с Android на сервер

Я работаю над кодом, чтобы позволить пользователю выбрать изображение из галереи и загрузить его на сервер, используя Base64. Все работает нормально, пока я не протестирую код на API> 19 и не получу ошибку.

Вот мой код:

    // Upload Image :)

camera.setOnClickListener(new OnClickListener () {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), 1);
}});} // End Of On Create

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1 && resultCode == RESULT_OK) {
//Bitmap photo = (Bitmap) data.getData().getPath();

Uri selectedImageUri = data.getData();
imagepath = getPath(selectedImageUri);
Bitmap image =BitmapFactory.decodeFile(imagepath);
imageView_pic.setImageBitmap(image);
imageData = encodeTobase64(image);
Toast.makeText(Share_event_experience.this, imagepath, Toast.LENGTH_LONG).show();
}
}

public static String encodeTobase64(Bitmap image) {
System.gc();

if (image == null) return null;

Bitmap immagex = image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);

byte[] b = baos.toByteArray();

String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); // min minSdkVersion 8

return imageEncoded;
}

public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}

Затем я отправляю значение «imageData» с помощью ASyncTask в файл php.

Ошибка, которую я получаю при попытке использования API> 19:

04-15 10:16:07.497: E/BitmapFactory(1357): Unable to decode stream: java.lang.NullPointerException

0

Решение

Не эксперт, но пытается помочь.
Это потому, что он не может найти изображение на пути?

Когда вы возвращаете свой результат из действия, вы не можете добавить путь в виде строки.

 Intent myIntenta = new Intent();
myIntenta.putExtra("path", "\\pathtoimage\filename");
setResult(9,myIntenta);
finish();

а затем onActivityResult получает его в виде строки?

imagePath = (String) intent.getStringExtra("path");

Или, может быть, потому что вы запускаете сборщик мусора в неподходящее время?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector