我想从专辑中获取图片,但是当我选择任何图片时,它都不显示并停止。我用我的手机测试,我认为问题可能是我用我的代码设置了错误的路径。但我无法找到它的位置。 案例100:拍照动作,它可以工作,案例101:选择图片动作。
这是我的onActivityResult
ident :: Parser String
ident = Parser f
where
f :: [Token] -> Either SyntaxError (String, [Token])
f (Id x : toks) = Right (x, toks)
f (Key x : _) = err $ "Identifier expected, got keyword '" ++ x ++ "'"
f [] = err "Identifier expected, got EOF"
(+++) :: Parser a -> Parser b -> Parser (a, b)
(+++) pa pb = Parser $ \toks1 -> do (x, toks2) <- runP pa toks1
(y, toks3) <- runP pb toks2
return ((x, y), toks3)
...
这是我的converUri
protected void **onActivityResult**(int requestCode , int resultCode , Intent
data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK ) {
switch (requestCode)
{
case 100:
Intent it = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
sendBroadcast(it);
break;
case 101:
imgUri = convertUri(data.getData());
break;
}
showImg();
}
else {
Toast.makeText(this , requestCode==100? "no take the pic" : "no choose the pic" , Toast.LENGTH_LONG).show();
}
}
这是我的showImag
Uri convertUri(Uri uri){
if(uri.toString().substring(0,7).equals("content"))
{
String[] colName = {MediaStore.MediaColumns.DATA};
Cursor cursor = getContentResolver().query(uri,colName,null,null,null);
cursor.moveToFirst();
uri = Uri.parse("file://"+ cursor.getString(0));
}
return uri;
}
答案 0 :(得分:0)
尝试获取文件系统路径时,您的方法错误。
最好从onActivityResult中使用data.getData()uri。
Bitmap bmp = BitmapFactory.decodeFile(imgUri.getPath(),option);
更改为:
InputStream is = getContentResolver().openInputStream(data.getData());
Bitmap bmp = BitmapFactory.decodeStream(is, option);
第一次通话时也一样。您只能使用is
一次。