(я читал много похожих вопросов, но потерпите меня здесь)
Мне нужно отправить изображение из одного действия (настраиваемая активность камеры), где второе действие - это загрузка изображения в Веб-альбом Picasa через Google API.
Каждый найденный мной пример выглядит примерно так:
File f = new File(cacheDir, "image_name.jpg");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(intent);
Это прекрасно работает, когда я использую стандартную загрузку Android Picasa (или любое другое приложение для обмена). Я также могу загружать фотографии с помощью примера Picasa , которое я использую, когда делюсь изображением из галереи / камеры и т. Д.
Но я не могу понять, как создать Intent, который использует uri «content: // ---», и передать его другому приложению (ни для этого примера приложения, ни для стандартного приложения Picasa) ...
В частности: Как я могу создать Intent, который совместим с приведенным ниже кодом (т.е. использует «content: //» uri вместо «file: //» uri)?
static class SendData {
String fileName;
Uri uri;
String contentType;
long contentLength;
SendData(Intent intent, ContentResolver contentResolver) {
Bundle extras = intent.getExtras();
if (extras.containsKey(Intent.EXTRA_STREAM)) {
Uri uri = this.uri = (Uri) extras.get(Intent.EXTRA_STREAM);
String scheme = uri.getScheme();
if (scheme.equals("content")) {
Cursor cursor = contentResolver.query(uri, null, null, null, null);
cursor.moveToFirst();
this.fileName = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DISPLAY_NAME));
this.contentType = intent.getType();
this.contentLength = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.SIZE));
}
}
}
}
- Получение информации о файле из файла uri вручную приводит к исключению NullPointerException с помощью запроса Google Http, используемого в приложении.
Жесткое кодирование контента работает. Например:
uploadIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://media/external/images/media/11"));