В ответ на этот вопрос, есть ли способ начать намерение в андроиде, не запрашивая у пользователя ничего?
Прямо сейчас, я получаю изображение следующим образом:
public void changeImage(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, getResources().getString(R.string.select_picture)),
PICK_IMAGE);
}
Затем я сохраняю Uri и при необходимости просматриваю изображение (я на самом деле сначала изменяю его размер, но это не имеет значения):
Uri _uri = Uri.parse(_path);
InputStream imageStream = null;
try {
imageStream = getContentResolver().openInputStream(_uri);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap b = BitmapFactory.decodeStream(imageStream);
iv.setImageBitmap(b);
Я хотел бы получить данные изображения, учитывая его Uri, "молча", ссылаясь на намерение, чтобы получить соответствующее разрешение. Поэтому мне нужно что-то вроде:
Edit:
Я попробовал метод setPackage()
. Этот код имеет следующее поведение:
-
Если используется намерение ACTION_VIEW, открывается галерея и показывает конкретное изображение.
-
Если используется намерение ACTION_GET_CONTENT, мне будет предложено выбрать изображение из галереи, даже если я поставлю конкретный Uri.
Uri _uri = Uri.parse(_path);
InputStream imageStream = null;
Bitmap b = null;
try {
imageStream = getContentResolver().openInputStream(_uri);
b = BitmapFactory.decodeStream(imageStream);
ImageView iv = (ImageView) findViewById(R.id.playerImage);
iv.setImageBitmap(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
Intent dummyIntent = new Intent(Intent.ACTION_GET_CONTENT);
//Intent dummyIntent = new Intent(Intent.ACTION_VIEW);
dummyIntent.setDataAndType(_uri,"image/*");
dummyIntent.setPackage("com.google.android.gallery3d");
startActivityForResult(dummyIntent, PICK_IMAGE);
}
Любые идеи?