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

在第三个活动中无法从Uri加载图像

袁炳
2023-03-14

我是Android Studio的初学者。我的应用程序允许我添加用户(fn,ln,ADR,URI::ImageURI),列出他们并查看他们的信息。我希望能够显示一个用户的信息时,点击我的列表视图。

问题是我只得到一个空白,而不是我想要的ImageView。

public static ArrayList <User> users =new ArrayList <User>();
public static User userSelected;
public static ListView mListView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(activity_main);

    mListView = (ListView) findViewById(R.id.List);

}



public void InputInfo(View view) {
    Intent AddEmployee = new Intent(this, NewEmployeeInfo.class);
    startActivityForResult(AddEmployee,0);

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{

    super.onActivityResult(0, resultCode, data);
    finaltest =NewEmployeeInfo .targetUri ;
    UserAdapter  useradapter;
    useradapter = new UserAdapter (MainActivity .this, android.R.layout.simple_html" target="_blank">list_item_1, users  ) ;
    mListView.setAdapter(useradapter );


    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {

            Intent appInfo = new Intent(MainActivity.this, DisplayInfo.class);
            User temp= users.get(position );
          userSelected =new User(temp.first_name ,temp.last_name,temp.adr,temp.url  );

                startActivity(appInfo);

        }
    });
}

    }
public class NewEmployeeInfo extends AppCompatActivity {

public ImageView imageview;
public ImageView targetImage;
public User u;
public static Bitmap photo;
public static Uri targetUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_employee_info);


}

public void takePhoto(View view) {
    Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(takePicture, 0);
}

public void pickphoto(View view) {
    Intent pickPhoto = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(pickPhoto, 1);

}

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    imageview = (ImageView) this.findViewById(imageView);
    resultphoto(requestCode, resultCode, imageReturnedIntent);
}

public void Save(View view) {



        Intent SaveDataIntent = new Intent(this, MainActivity.class);

        EditText FN = (EditText) findViewById(R.id.editText);
        EditText LN = (EditText) findViewById(R.id.editText5);
        EditText ADDRESS = (EditText) findViewById(R.id.editText6);

        String firstname = FN.getText().toString();
        String lastname = LN.getText().toString();
        String address = ADDRESS.getText().toString();

        if (firstname.length() == 0 || lastname.length() == 0 || address.length() == 0) {


            Toast.makeText(this, "No Emty Fields!!",
                    Toast.LENGTH_LONG).show();
            return;

        }


        u = new User(firstname, lastname, address, targetUri);
        users.add(u);





            setResult(RESULT_OK, SaveDataIntent);
            finish();
}


private void resultphoto(int requestCode, int resultCode, Intent imageReturnedIntent) {
    switch (requestCode) {

        case 0:
            if (resultCode == RESULT_OK) {
                targetUri = imageReturnedIntent.getData();

                imageview.setImageURI(targetUri);
                imageReturnedIntent.getExtras().get("data");

            }

            break;
        case 1:


            if (resultCode == RESULT_OK) {
                targetUri = imageReturnedIntent.getData();
                targetImage = (ImageView) findViewById(imageView);

                try {

                    photo = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
                    targetImage.setImageBitmap(photo);
                } catch (FileNotFoundException e) {

                    e.printStackTrace();
                }
            }
            break;
    }

}
public class DisplayInfo extends AppCompatActivity {
public ImageView imageView;
public Bitmap image;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_info);

    TextView fn = (TextView) findViewById(R.id.firstname);
    TextView ln = (TextView) findViewById(R.id.lastname);
    TextView adr = (TextView) findViewById(R.id.address);
    imageView = (ImageView) findViewById(R.id.imageView2);

    fn.setText(MainActivity.userSelected.first_name);
    ln.setText(MainActivity.userSelected.last_name);
    adr.setText(MainActivity.userSelected.adr);
    imageView.setImageURI(MainActivity.userSelected.url  ) ;

E/DatabaseUTILS:向包java.lang.SecurityException:权限拒绝:读取com.android.providers.media.mediaProvider uri内容://media/external/images/media/810来自PID=12644,UID=10280需要Android.Permission.read_external_storage或grantUriPermission()

尽管我在清单文件中包含了这些权限:

共有1个答案

慕佑运
2023-03-14

询问运行时权限教程

 类似资料:
  • 我正在尝试加载存储在应用程序文件夹上的图像当我打开活动时,我从logcat收到了这个错误: 1-20 01:30:40.125 14331-14331/mx.eusaga。af W/ImageView:无法打开内容:content://mx.eusaga.af.fileprovider/imagenes/1-db384fa8-f28b-4595-abbf-d45d38fd4036.jpgjava.

  • 我有一个疑问,想澄清一些关于包含多个片段的活动的观点。 我有10个片段与一个活动(HomeActivity.java)相连;此活动包含一个导航抽屉和工具栏,带有多个图标,如搜索、添加、删除、后退按钮等。 我遵循的结构如下:, 用户点击抽屉菜单中的任何项目,我正在加载片段, 碎片加载- 我正在根据HomeActivity本身中的片段更改标题名称,基于工具栏。 我的导航抽屉项目只有一个片段,在frag

  • 我有一个活动,可以在收藏夹列表中添加书签。每个宠儿都有一个按钮。当我点击那个按钮时,我必须进入那个特定的活动。但它显示了一个错误。应用程序不会崩溃,但书签活动不会从单击开始。 以下是“收藏夹”活动的代码: 错误是onClick方法,具体如下: 它给我一个ClassNotFoundExc0019。 似乎有了这段代码,我就可以启动这个包中的活动了。但问题是,我想开始的活动在另一个包中。logcat说它

  • 但我得到了空光标。因此,filepath始终为空/null。 任何人,能建议我做错了什么吗?

  • 活动1:我有一个图像视图,其中从相机和画廊拍摄的图像被设置,它工作正常。在这个活动中有一个右键单击按钮,它将重定向到第二个活动。 活动2:在这个活动中,我有四个选择 保存 活动3:从上述四个选项中,第三个活动相应地工作。现在我不知道如何将第一个活动中拍摄的图像传递给第三个活动。 我的努力:在从相机拍摄的第一张活动图片中: 在第二个活动SaveVia中: 在第三个名为“保存”的活动中:

  • 问题内容: 我测试了此代码以创建带有图像的对话框。 我将图像文件放入目录中。但是由于某些原因,图像无法显示。你能帮我纠正我的错误吗? 问题答案: 只需替换以下代码: 有了这个 Docu参考。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html 当您将a传递给该类时,可以用 四种不同的方式 处理( 从do