画像共有オプションを使用して、チャット クライアントで代替アイコンとして使用する多数の画像を含むアプリを構築しています。
編集:別のアプリ(私のものではない)からアプリを起動する方法を見つけたので、デフォルトのギャラリーまたは画像を選択するためのアプリを選択できるようになりました。
残っているのは、アプリから同じものを返すことができるように、画像ピッキングのために呼び出すアプリに画像ギャラリーが正確に何を返すかを知る必要があるということです。
EDIT 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;
}
助けてくれてありがとう