访问和使用图库

时间:2015-04-28 04:48:18

标签: android gallery

我花了几天时间研究这个问题,而我却无处可去。被他人接受为正确的事情根本就不适合我,而且他们使用的关键词通常都不存在。

我要做的就是让用户从图库中选择一张图片。我想将此选择存储为位图,转换图像的大小,然后将其保存到文件。

他们可以选择使用相机做同样的事情,这段代码完美无缺。不知道画廊为何如此困难。这是我的代码(从下面的行开始,由于某种原因不会添加到代码块):

if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK && null != data) {

            final Context context=this;
            Intent j=new Intent(context,PlayerSelection.class);
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            Uri selectedImageUri = data.getData();
            String selectedImage = selectedImageUri.getPath();
            Toast.makeText(getApplicationContext(), selectedImage, Toast.LENGTH_LONG).show();
            String fName = new File(getFilesDir(), selectedImage).getAbsolutePath();
            fName = fName + ".jpg";
            Toast.makeText(getApplicationContext(), fName, Toast.LENGTH_LONG).show();
            try {
               Bitmap galleryTemp = MediaStore.Images.Media.getBitmap(this.getContentResolver(),selectedImageUri);
            } catch (IOException e) {
               e.printStackTrace();
            }
            //Bitmap galleryPic = Bitmap.createScaledBitmap(galleryTemp, 50, 50, false);
            //saveImageFile(galleryTemp);
            //startActivity(j);
        }

我上面评论过的部分是应用失败的地方。当我获得文件的路径时,我被定向到 data \ data \ app.name \ files \ external \ images \ media \ 18630 ,  但实际文件存在于** Phone \ DCIM \ Camera **

我认为这就是问题所在,因为当我尝试操作或对图像(Bitmap galleryTemp)做任何事情时,应用程序崩溃了。

这是我用来调用上述过程的方法:

案例R.id.btnGallery:

            Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            startActivityForResult(i, GALLERY_REQUEST);
            break;

有什么想法吗?我几乎已经阅读了这个主题的所有内容,没有任何内容对我有用。

1 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助:

@Override
public void onAuthenticationFailure(HttpServletRequest request,
        HttpServletResponse response, AuthenticationException exception)
        throws IOException, ServletException {

    if (LOG.isDebugEnabled()) {
        LOG.debug("Error message set in  threadlocal is :"
                + AuthErrorMsgThreadLocal.get());
    }

    // Login failed in Siteminder, so no threadlocal message
    if (StringUtils.isEmpty(AuthErrorMsgThreadLocal.get())) {
        request.getSession().setAttribute("AUTH_ERROR_MSG",
                "Invalid Username or Password");
        response.sendRedirect(request.getContextPath() + ERROR_REDIRECT_URL);
    } else {
        // in the event of an auth failure, get the specific error message
        // from threadlocal
        request.getSession().setAttribute("AUTH_ERROR_MSG",
                AuthErrorMsgThreadLocal.get());
        response.sendRedirect(request.getContextPath() + ERROR_REDIRECT_URL);
        AuthErrorMsgThreadLocal.unset();

    }
}

您必须从“媒体商店”获取路径。内容提供商,为您提供实际图像,缩略图等的路径。