我有图片网址。 我正在创建它的.JPEG文件并保存在SD卡目录中。
下载所有图像(创建位图并以JPEG格式压缩)后,我正在调用另一个意图,该意图应该显示在该目录中下载的所有图像。
但我看到空白。
我嘲笑DDMS,发现正确大小的jpeg已下载到我想要的目录中。但我的意图并没有表现出来。
令我惊讶的是,当我关闭模拟器时,重新启动它,用另一组图像链接重新运行程序,现在我的意图是显示以前下载的图像! (不是在这个程序运行中下载的图像)。
以下是我用于显示下载图片的代码: 有人可以帮我吗?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imagechooser);
Bundle bundle = this.getIntent().getExtras();
thumbNailsLnkdhs = (LinkedHashSet<String>) bundle.getSerializable("keyThumbNails");
Toast.makeText(getApplicationContext(),
"ThumbNailsLnkdhs size in new intent: "+thumbNailsLnkdhs.size(), Toast.LENGTH_LONG).show();
final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor=managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns,
MediaStore.Images.Media.DATA + " like ? ",
new String[] {"%myDesiredDirectory%"},
null);
Log.d(LOGGER, "cursor made");
int colcount=imagecursor.getColumnCount();
//.d(LOGGER, "cursor column count is: "+colcount);
int count =imagecursor.getCount();
//Log.d(LOGGER, "count is: "+count);
String colnAME=imagecursor.getColumnName(0);
//Log.d(LOGGER, "COL NAME FOR 0TH COLUMN="+colnAME);
String colnAME_1=imagecursor.getColumnName(1);
//Log.d(LOGGER, "COL NAME FOR 1st COLUMN="+colnAME_1);
int image_column_index = imagecursor.getColumnIndex(imagecursor.getColumnName(1));
//Log.d(LOGGER, "image_column_index="+image_column_index);
//Log.d(LOGGER, "ThumbNailsLnkdhs size: "+ThumbNailsLnkdhs.size());
//int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID);
this.count = imagecursor.getCount();
//Log.d(LOGGER, "this.count="+this.count);
this.thumbnails = new Bitmap[this.count];
this.arrPath = new String[this.count];
this.thumbnailsselection = new boolean[this.count];
for (int i = 0; i < this.count; i++) {
imagecursor.moveToPosition(i);
int id = imagecursor.getInt(image_column_index);
int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
//Log.d(LOGGER, "dataColumnIndex="+dataColumnIndex);
thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
getApplicationContext().getContentResolver(), id,
MediaStore.Images.Thumbnails.MICRO_KIND, null);
arrPath[i]= imagecursor.getString(dataColumnIndex);
}
GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
imageAdapter = new ImageAdapter();
imagegrid.setAdapter(imageAdapter);
imagecursor.close();
}
好的,按照以下ansr的建议, 我发现在创建物理文件后我需要在图库中插入图像。
我试过
MediaStore.Images.Media.insertImage(getContentResolver(), bitmapimage,
imgname+ ".jpg Card Image", "imgDescription"
+ ".jpg Card Image");
但是无法在下载,创建物理文件而不是商店活动的类中使用getcontentresolver作为im。
所以我试过
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+Environment.getExternalStorageDirectory()
+ "/myDesiredDirectory/")))
在我的活动中显示以前下载的图像...但它没有帮助我显示新下载的图像... 所以试过
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory()+)));
this also not showing new images :(
任何人都可以帮我吗?
答案 0 :(得分:0)
当您通过DDMS手动将图像放入AVD时,您需要从设置中扫描媒体吗?
同样的问题
下载后,您需要通过编码扫描媒体并在设置适配器之前关闭图像光标。
答案 1 :(得分:0)
您正在创建一个新的ImageAdapter,然后将GridView附加到该“新”适配器。换句话说,GridView绑定为空,因为它连接到新的空白适配器。
您将位图/光标连接到适配器/视图?