我如何在kitkat中使用此方法

时间:2014-09-02 04:21:14

标签: android android-4.4-kitkat

我尝试了许多不同的方法或解决方案,但似乎没有一种方法可行。我已经尝试了一些特定的解决方案,它们返回一个字符串和一个上下文但我不知道如何处理context,即使我将context的接收者设置为 null 该应用返回错误。我想要做的是,为了能够upload an image file,我需要文件路径,Uri或内容Uri给我这样的地址

  

内容:// something_something / 304:

     

但我需要这样的东西“   存储/ SD卡/ something_something / 304.jpg“

如何在KITKAT中得到它?

这是我用于获取所选用户Image的路径的代码/方法。

public String getPath(Uri uri)
{
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}

希望我提供足够的细节。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

KITKAT不提供实际的图像路径以用于安全目的。

if (Build.VERSION.SDK_INT >19){
    InputStream imInputStream =  getContentResolver().openInputStream(data.getData());
    Bitmap bitmap = BitmapFactory.decodeStream(imInputStream);
    String imagePath = saveGalaryImageOnKitkat(bitmap);
}
    ///After use you can delete the bitmap.



    private String saveGalaryImageOnKitkat(Bitmap bitmap){
            try{
                File cacheDir;

                if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
                cacheDir=new File(Environment.getExternalStorageDirectory(),getResources().getString(R.string.app_name));
                else
                cacheDir=getExternalFilesDir(Environment.DIRECTORY_PICTURES);
                if(!cacheDir.exists())
                cacheDir.mkdirs();

                String filename=java.lang.System.currentTimeMillis()+".png";
                File file = new File(cacheDir, filename);


                file.createNewFile();

                FileOutputStream out = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
                return file.getAbsolutePath();
                }catch(Exception e){
                    e.printStackTrace();
                }

            return null;

        }