【问题标题】:How to open images/videos/audio?如何打开图像/视频/音频?
【发布时间】:2014-04-19 12:42:39
【问题描述】:

在我的应用程序中有一个按钮,当按下该按钮时,应该会打开图片库、视频库或音频播放器。

请问我将如何构建一个意图来执行该操作?

【问题讨论】:

  • 您需要 OR(其中任何一个)还是 AND(所有这些)?
  • @Atul O Holic 感谢 Atul,以及所有这些,以便用户选择。
  • @LisaAnne 根据您的问题,我还建议您打开弹出对话框、Alertdialog 或自定义对话框,然后从中执行您的操作。
  • @PiYusHGuPtA 我已经向她提出了这个建议。
  • @LazyNinja 我在第一条评论中提出了另一个建议。

标签: android


【解决方案1】:

尝试通过单击任何按钮传递文件路径,然后此方法根据该文件打开任何类型的文件

 File file = new File(filePath); 
    MimeTypeMap map = MimeTypeMap.getSingleton();
       String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName());
         String type = map.getMimeTypeFromExtension(ext);
        if (type == null)
        type = "*/*";

    Uri uri = Uri.parse("www.google.com");
    Intent type_intent = new Intent(Intent.ACTION_VIEW, uri);
    Uri data = Uri.fromFile(file);
    type_intent.setDataAndType(data, type);
    startActivity(type_intent);

图片

private void getallimages(File dir)
    {

    String[] STAR = { "*" };
    controller.images.clear();

    final String orderBy = MediaStore.Images.Media.DEFAULT_SORT_ORDER;
    Cursor imagecursor = cntx.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, STAR, null, null, orderBy);
    int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
    int count = imagecursor.getCount();
    for (int i = 0; i < count; i++) {
        imagecursor.moveToPosition(i);
        int id = imagecursor.getInt(image_column_index);
        ImageItem imageItem = new ImageItem();//this is my wrapper class 
        if(new File(imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA))).length()<=10485760)
        {
            imageItem.filePath = imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA));

        imageItem.id = id;
        imageItem.selection = false; //newly added item will be selected by default this it do for check box unselect u dont need to fill this 
        controller.images.add(imageItem);//this i just add all info in wrapper class    

        }

} }

音频

private void getallaudio()
{
     String[] STAR = { "*" };
    controller.audioWrapper.clear();
    Cursor audioCursor = cntx.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, STAR, null, null, null);
    if (audioCursor != null) 
    {
        if (audioCursor.moveToFirst()) 
        {
            do 
            {

                String path = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.DATA));


                           controller.audioWrapper.add(new MediaWrapper(new File(path).getName(), path, "Audio",false));



             }while (audioCursor.moveToNext());

        }
     }


}

对于视频

private void getallvideo()
    {
         String[] STAR = { "*" };

        controller.videoWrapper.clear();
        Cursor videoCursor = cntx.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, STAR, null, null, null);

        if (videoCursor != null) 
        {
            if (videoCursor.moveToFirst()) 
            {
                do 
                {


                    String path = videoCursor.getString(videoCursor.getColumnIndex(MediaStore.Images.Media.DATA));

                               controller.videoWrapper.add(new MediaWrapper(new File(path).getName(), path, "Video",false,color_string));




                 }while (videoCursor.moveToNext());

            }
         }
    }

【讨论】:

  • 谢谢 Bhanu,但我不需要打开单个文件,而是需要用户查看 Gallery 和 MediaPlayer 应用程序,以便他可以选择使用什么,音频、视频或图片.
  • 现在看看我的 bigg bigg biggg ans :) 它会给你所有你想要的@LisaAnne :)
【解决方案2】:

我会这样理解:
单击按钮时,会弹出一个带有 3 个按钮的自定义对话框。

  1. 图片库按钮
  2. 视频库按钮
  3. 音频播放器按钮

根据用户的选择,您启动与操作相对应的意图。

【讨论】:

  • 谢谢 Lazy Ninja,但不幸的是我只需要 1 个按钮。丽莎
  • @LisaAnne 是的,只有一个按钮,但你必须添加一个弹出对话框。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 2013-07-07
  • 2018-02-19
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多