没有应用可以执行此操作 - 打开图像

时间:2014-04-18 05:28:55

标签: java android android-intent android-mediaplayer

我尝试使用通过意图启动的图库来查看图像但是我在尝试这样做时遇到错误。我认为这可能与:

有关
intent.setDataAndType(selectedVideo, "video/*, image/*");
打开图像和视频之间的onActivityResult中存在某种冲突 - 但我不确定。

非常感谢任何输入:

P.S。

理想情况下,这会在选择后使用图库打开图像 - 而不是使用我的应用程序打开它。

来源:

ImageButton pb = (ImageButton) findViewById(R.id.photos);
        pb.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
//              Toast.makeText(UI.this, "Before and After Photos",
//                      Toast.LENGTH_LONG).show();
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("image/*");
                startActivityForResult(intent, SELECT_PHOTO);
            }
        });

        ImageButton vb = (ImageButton) findViewById(R.id.video);
        vb.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
//              Toast.makeText(UI.this, "Video Testimonial", Toast.LENGTH_LONG)
//                      .show();
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("video/*");
                startActivityForResult(intent, SELECT_VIDEO);

            }
        });
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedVideo = data.getData();
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(selectedVideo, "video/*, image/*");
                startActivity(Intent.createChooser(intent,
                        "Complete action using"));  



            }

        }

        ;


    }
}

编辑:

我正在尝试完成一项非常简单的任务:

我需要能够点击图像按钮进行视频,从图库中选择并播放,然后单击图像按钮获取图像,选择图像并查看它 - 所有使用图库

如何实现这一目标?

当前来源:

        ImageButton pb = (ImageButton) findViewById(R.id.photos);
        pb.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("image/*");
                startActivityForResult(intent, SELECT_PHOTO);
            }
        });

        ImageButton vb = (ImageButton) findViewById(R.id.video);
        vb.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
    .show();
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("video/*");
                startActivityForResult(intent, SELECT_VIDEO);

            }
        });
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedVideo = data.getData();
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(selectedVideo, "video/*, image/*");
                startActivity(Intent.createChooser(intent,
                        "Complete action using"));  



            }

        }

        ;


    }
}

2 个答案:

答案 0 :(得分:0)

你有什么

startActivityForResult(intent, SELECT_PHOTO);

然后你有

if (requestCode == 1) {

然后

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(selectedVideo, "video/*, image/*");
startActivity(Intent.createChooser(intent,
                    "Complete action using")); 

您正在尝试使用意图选择器,而android表示没有可以执行操作的应用程序。

您需要更改为

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SELECT_PHOTO) {
        if (resultCode == Activity.RESULT_OK) {
            Uri selectedImage = data.getData();
             iv.setImageURI(selectedImage);

        }

    }

示例:

我使用ImageView显示从图库中选择的图像

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageButton1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="168dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

MainActivity

public class MainActivity extends Activity {


        private static final int SELECT_PHOTO = 100;

        ImageView iv;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                iv= (ImageView) findViewById(R.id.imageView1);
                ImageButton ab = (ImageButton) findViewById(R.id.imageButton1);
                ab.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                Toast.makeText(MainActivity.this, "Image Testimonial", Toast.LENGTH_LONG)
                                                .show();
                                Intent intent = new Intent(
                                                Intent.ACTION_PICK
                                                );
                                intent.setType("image/*");
                                startActivityForResult(intent,  SELECT_PHOTO);
                        }
                });


        }

        public void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (requestCode ==  SELECT_PHOTO) {
                        if (resultCode == Activity.RESULT_OK) {
                                Uri selectedImage = data.getData();
                                iv.setImageURI(selectedImage);

                        }

                }
        }
}

编辑问题

public class MainActivity extends Activity {

    // Splash screen timer
    private static int SPLASH_TIME_OUT = 5000;
    private static final int SELECT_PHOTO = 101;
    private static final int SELECT_VIDEO = 100;

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

            ImageButton ab = (ImageButton) findViewById(R.id.imageButton1);
            ab.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "Audio Testimonial", Toast.LENGTH_LONG)
                                            .show();
                            Intent i = new Intent(
                                            Intent.ACTION_PICK,
                                            android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
                            startActivityForResult(i, 1);
                    }
            });

            ImageButton vb = (ImageButton) findViewById(R.id.imageButton2);
            vb.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "Video Testimonial", Toast.LENGTH_LONG)
                                            .show();
                            Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                            photoPickerIntent.setType("video/*");
                            startActivityForResult(photoPickerIntent, SELECT_VIDEO);

                    }

            });
    }


    public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == Activity.RESULT_OK)
            {
            if (requestCode == SELECT_VIDEO) {
                     {
                            Uri selectedVideo = data.getData();
                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.setDataAndType(selectedVideo, "video/*");
                            startActivity(intent);

                    }
            }
            else if (requestCode == SELECT_PHOTO) {

                          Uri selectedImage = data.getData();
                          Intent intent = new Intent();
                          intent.setAction(Intent.ACTION_VIEW);
                          intent.setDataAndType(selectedImage,"image/*");
                          startActivity(intent);
              }

            }



//            ImageButton wb = (ImageButton) findViewById(R.id.imageButton3);
//            wb.setOnClickListener(new View.OnClickListener() {
//                    public void onClick(View v) {
//                            Toast.makeText(MainActivity.this, "Written Testimonial",
//                                            Toast.LENGTH_LONG).show();
//                            Intent intent = new Intent(MainActivity.this, Written.class);
//                            startActivity(intent);
//                    }
//            });

            ImageButton pb = (ImageButton) findViewById(R.id.imageButton4);
            pb.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "Before and After Photos",
                                            Toast.LENGTH_LONG).show();
                            Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                            photoPickerIntent.setType("image/*");
                            startActivityForResult(photoPickerIntent, SELECT_PHOTO);
                    }
            });
      }
    }

答案 1 :(得分:0)

在华为P9,android marshmallow,一台设备没有任何可以管理该意图请求的应用程序(它没有图库或照片应用程序)。所以手动安装这些应用程序并完美地工作