下载图像并在android中显示活动

时间:2012-03-10 09:48:53

标签: android

我有图片网址。 我正在创建它的.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 :(

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

当您通过DDMS手动将图像放入AVD时,您需要从设置中扫描媒体吗?

同样的问题

下载后,您需要通过编码扫描媒体并在设置适配器之前关闭图像光标。

答案 1 :(得分:0)

您正在创建一个新的ImageAdapter,然后将GridView附加到该“新”适配器。换句话说,GridView绑定为空,因为它连接到新的空白适配器。

您将位图/光标连接到适配器/视图?