Как вернуть идентификатор ресурса отрисовки из моего приложения обратно в вызывающее приложение другого пакета / разработчика
Я создаю приложение, которое содержит большое количество изображений для использования в качестве альтернативных значков с любым клиентом чата, использующим параметр обмена изображениями.
РЕДАКТИРОВАТЬ: я выяснил, как запустить свое приложение из другого приложения (не мое), чтобы теперь я мог выбирать между галереей по умолчанию или мое приложение для выбора изображений.
Остается только то, что мне нужно знать, что именно галерея изображений возвращает приложениям, которые вызывают ее для выбора изображений, чтобы я мог вернуть то же самое из своего приложения.
РЕДАКТИРОВАТЬ 3: Теперь я передаю Намерение обратно клиенту чата, как так
Uri imageURI;
Intent shareIntent = new Intent();
switch(v.getId()){
case R.id.eric1 :
imageURI = Uri.parse(MY_RESOURCE_URI);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageURI);
shareIntent.setType("image/plain");
setResult(RESULT_OK, shareIntent);
Utils.makeToast("Selected",this);
finish();
Теперь я получаю сообщение об ошибке, что общий файл не удалось. Это потому, что я пытаюсь передать URI ресурса из моего пакета в другой пакет?
РЕДАКТИРОВАТЬ- наконец, решил это так
Bitmap image = BitmapFactory.decodeResource(getResources(), resID);
File imageFile;
Date d = new Date();
int imgName = (Long.toString(d.getTime())).hashCode();
String state = Environment.getExternalStorageState();
printDebug(state);
if (Environment.MEDIA_MOUNTED.equals(state)) {
File file = getExternalCacheDir();
if (file != null) {
try {
//String root = file.getAbsolutePath();
imageFile = new File(file, imgName+".png");
printDebug(imageFile.getAbsolutePath());
FileOutputStream stream = new FileOutputStream(imageFile);
boolean complete = image.compress(Bitmap.CompressFormat.PNG, 90, stream);
if (!complete) {
Log.d("tag", "image not saved");
}
Log.d("tag", "image saved");
return Uri.parse(imageFile.getAbsolutePath());
} catch (IOException e) {
Log.d("tag", "Can't save image", e);
}
}
}
return null;
}
Спасибо за помощь
1 ответ
Извините, я забыл опубликовать это как ответ, но вот оно -
Bitmap image = BitmapFactory.decodeResource(getResources(), resID);
File imageFile;
Date d = new Date();
int imgName = (Long.toString(d.getTime())).hashCode();
String state = Environment.getExternalStorageState();
printDebug(state);
if (Environment.MEDIA_MOUNTED.equals(state)) {
File file = getExternalCacheDir();
if (file != null) {
try {
//String root = file.getAbsolutePath();
imageFile = new File(file, imgName+".png");
printDebug(imageFile.getAbsolutePath());
FileOutputStream stream = new FileOutputStream(imageFile);
boolean complete = image.compress(Bitmap.CompressFormat.PNG, 90, stream);
if (!complete) {
Log.d("tag", "image not saved");
}
Log.d("tag", "image saved");
return Uri.parse(imageFile.getAbsolutePath());
} catch (IOException e) {
Log.d("tag", "Can't save image", e);
}
}
}
return null;
}