当前位置: 首页 > 知识库问答 >
问题:

sdcard中的setImageBitmap()不显示[重复]

刘和玉
2023-03-14

我正在尝试将图像从SD卡设置为图像视图,但它不起作用。我做错了什么?我确定该文件存在。

这是Mainactive的代码:

public class MainActivity extends AppCompatActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imageView = findViewById(R.id.imageView);
        String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/Naruto_newshot.png";
        File file = new File(filePath);
        if (file.exists())
            imageView.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));
    }
}

以下是XML布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.mbo.testimage">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application>
        ...
    </application>

</manifest>

最后,图像200 × 149像素:

共有2个答案

施兴言
2023-03-14

在清单中添加此权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

此外,在Android 6和更高版本上,你需要调用这个来知道你是否有权限

boolean permission = checkSelfPermission("android.permission.READ_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED;

如果没有,您需要致电:

 String[] perms = {"android.permission.READ_EXTERNAL_STORAGE"};
 requestPermissions(perms, REQUEST_CODE);

最后,您需要覆盖这个将在用户响应后调用的Active方法:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) {}
陈宜修
2023-03-14

您是否添加了写入外部存储的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

 int permissionCheck = ContextCompat.checkSelfPermission(
        this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {      
        ActivityCompat.requestPermissions(this, new String[] 
 {
Manifest.permission.WRITE_EXTERNAL_STORAGE}, 33);
} 

    }
 类似资料:
  • 单击时,我的应用可在相机和图库之间进行选择,然后该图片将显示在 ImageView 中。我最初尝试显示完整图像,然后尝试使用位图方式,但没有任何效果。我只是得到一个空白的图像视图。请给我一些关于我做错了什么的指导,并在必要时要求澄清: 相机/画廊照片代码:

  • 我知道以前有人问过这个问题,但那篇文章中的解决方案对我不起作用。 我刚刚开始学习Android编程,当时正在做一个模型。它可以在Android Studio中正确显示,但不能在我的设备上显示。图像和背景色显示正确,但没有文本显示。我试过改变字体和字体颜色。需要改变什么? 我有另一个使用RelativeLayout的示例,它显示正确,但这个ConstraintLayout不正确。 第一个图像来自AS

  • 我使用的是SpringBoot2.1。3,我想添加一个错误页面作为回退。我试图添加一个错误。模板文件夹下的html,但它不起作用。 还试图添加错误控制器,并为每个错误类型分类一个页面,但它也不起作用。 我还需要做其他配置吗? 提前谢谢。

  • 请告诉我OpenLayers中的图标如何使用svg?svg应该有什么结构? 我们在使用svg时遇到了几个问题,并准备了一个示例: > 使用“颜色”属性(以绿色微笑和红色微笑为例)无法正确更改图像的颜色 如果删除指向标准“xmlns=”http://www.w3.org/2000/svg“的链接(例如黄色微笑),则不会显示图像。为什么它不起作用? 感谢您的回答!

  • 问题内容: 我在MySQL数据库中有以下数据: 我现在正在使用PHP工作,但是在使用C#,Java和其他语言时,却多次遇到此问题。 现在,我过去和现在的目标是以以下格式显示数据: 在创建一个代表我的SQL表的类之前,我已经解决了这个问题。然后我创建了一个hold和class。 我正在跳过步骤,但我希望您能理解我的意思。我可能只需要用什么关键字来称呼这种类型的问题。完成此操作的首选方式是什么? 问题

  • 我有一个基于Eclipse RCP的应用程序,带有用于跟踪作业的Eclipse ProgressView。 我已经实现了重复工作根据: http://wiki.eclipse.org/FAQ_How_do_I_create_a_repeating_background_task? 第一次运行重复作业时,我可以看到progressMonitor在ProgressView中工作。问题是下次启动此重复作