Android视图图像意图不显示图像

时间:2016-06-23 10:44:41

标签: android android-intent

我正在尝试点按图片视图,并在默认照片查看器中打开该图片:

void handleOpenImage(){
    try {
        File temp = File.createTempFile("myImage", ".png");
        BitmapDrawable bitmapDrawable = (BitmapDrawable) attachedImageView.getDrawable();
        Bitmap bitmap = bitmapDrawable.getBitmap();
        FileOutputStream stream = new FileOutputStream(temp);
        boolean success = bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
        if(!success){
            throw new Exception();
        }
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(temp), "image/*");
        startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

但是,当我调用此函数时,画廊活动会启动,但不会显示我的图像。图像文件在临时路径上成功创建,双重检查。为什么意图不起作用?

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,/data/data/MY_APPS_IDENTIFIER/cache/ulouder-1004534880.png文件的绝对路径是temp。 此路径位于每个应用程序的私有空间中,出于安全原因,其他应用程序无法访问该路径。

通过将//returns a list of diagrams that somehow use this element. public override HashSet<T> getUsingDiagrams<T>() { string sqlGetDiagrams = @"select distinct d.Diagram_ID from t_DiagramObjects d where d.Object_ID = " + this.wrappedElement.ElementID; List<UML.Diagrams.Diagram> allDiagrams = this.model.getDiagramsByQuery(sqlGetDiagrams).Cast<UML.Diagrams.Diagram>().ToList(); ; ; HashSet<T> returnedDiagrams = new HashSet<T>(); foreach (UML.Diagrams.Diagram diagram in allDiagrams) { if (diagram is T) { T typedDiagram = (T)diagram; if (!returnedDiagrams.Contains(typedDiagram)) { returnedDiagrams.Add(typedDiagram); } } } return returnedDiagrams; } 文件保存到其他位置,图库应用可以访问该文件并正确显示图像。