您好我的应用中有一个图库,当您点击缩略图时,它会在图像视图中显示图像。我正在为一个警告对话框设置一个Long Click Listener,该对话框有2个按钮,一个设置为壁纸,另一个设置为共享。我有共享意图和获取绘图缓存有点工作。它适用于模拟器,但不适用于我的手机。我已经使用了这个网站上的许多例子来实现这一目标,但它根本不起作用。它一直强行关闭手机上的应用程序。任何帮助表示赞赏。
alertDialog.setButton2("Share",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
imgView.setDrawingCacheEnabled(true);
Bitmap b = imgView.getDrawingCache();
File sdCard = Environment.getExternalStorageDirectory();
File file = new File(sdCard, "image.jpg");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
b.compress(CompressFormat.JPEG, 95,fos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("Save Example", "Image saved.");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/image.jpg"));
startActivity(Intent.createChooser(intent, "Share Picture Via.."));
}
});
alertDialog.show();
return true;
更新:
似乎有问题b.compress(CompressFormat.JPEG, 95, fos);
它一直在说空指针。
原来这个空指针实际上是一个read_only错误。因此它实际上没有写入文件我得到了一个ioexception只读文件系统。为什么要这样做?
答案 0 :(得分:0)
imgView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); imgView.layout(0, 0, imgView.getMeasuredWidth(), imgView.getMeasuredHeight());
在
之前看看这是否有帮助 Bitmap b = imgView.getDrawingCache();
还要看看这是否有帮助 Android drawing cache