Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从文件的Uri id获取路径?_Java_Android_Windows_Path_Uri - Fatal编程技术网

Java 如何从文件的Uri id获取路径?

Java 如何从文件的Uri id获取路径?,java,android,windows,path,uri,Java,Android,Windows,Path,Uri,我试图用我的应用程序创建的视频制作一个图库。 当我点击其中一个缩略图时,我想将所选视频保存在我的首选项中 为了获得缩略图,我编写了以下代码: public void addVidsToArray() { 由于Uri id,我得到了Tumbnail图片。 现在我的问题是如何将其恢复到新文件中的正常路径以保存它 下面的代码是onClickListener,它应该将视频保存到首选项。 但是如果我将Uri添加到新文件中,则该文件不存在 我不明白 ga.setOnItemClickListener(new

我试图用我的应用程序创建的视频制作一个图库。 当我点击其中一个缩略图时,我想将所选视频保存在我的首选项中

为了获得缩略图,我编写了以下代码:

public void addVidsToArray() {

由于Uri id,我得到了Tumbnail图片。 现在我的问题是如何将其恢复到新文件中的正常路径以保存它

下面的代码是onClickListener,它应该将视频保存到首选项。 但是如果我将Uri添加到新文件中,则该文件不存在

我不明白

ga.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id)
        {               
            String[] projection = { MediaStore.Video.Media._ID };
            String selection = MEDIA_DATA + " like ? ";
            String [] selectionArgs = new String[] {"%Bla%"};
            int columIndex;
            int id1;

            Cursor videoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                    projection, 
                    selection, 
                    selectionArgs, 
                    null);

            videoCursor.moveToFirst();

            if(videoCursor.getCount() >= 1)
            {
                while (videoCursor.moveToNext()) {
                    columIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID) ;
                    id1 = videoCursor.getInt(columIndex);
                    daten.add(id1+"");                      
                }
            } 
            Log.v("vid id", ""+daten.get(position));

            int idData = Integer.parseInt(daten.get(position));

            saveVideo(idData);                              
        }
    });


}

public void saveVideo(int idData)
{
    String uriString = "content://media/external/video/media/" + idData;
    Uri uri = Uri.parse(uriString);
    File mVideoFile = new File(uriString);

    Log.v("testpfad", ""+ mVideoFile.getAbsolutePath() + " " + mVideoFile.getParentFile().getAbsolutePath() + " " + mVideoFile.exists());               
    mVideoFileLen = getDurationFromURI(uri);
    //setPreferences(mVideoFile.getAbsolutePath(), PICKED_VIDEO);
    //setPreferences(mVideoFileLen, VIDEO_LEN);     
    //startActivity(new Intent(this, Finished.class));  
}

最后,我需要借助Uri中的Id创建一个文件。

列MediaStore.Video.Media.DATA包含文件的路径。因此,我只需使用“where Id=iData”进行managedQuery?
ga.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id)
        {               
            String[] projection = { MediaStore.Video.Media._ID };
            String selection = MEDIA_DATA + " like ? ";
            String [] selectionArgs = new String[] {"%Bla%"};
            int columIndex;
            int id1;

            Cursor videoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                    projection, 
                    selection, 
                    selectionArgs, 
                    null);

            videoCursor.moveToFirst();

            if(videoCursor.getCount() >= 1)
            {
                while (videoCursor.moveToNext()) {
                    columIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID) ;
                    id1 = videoCursor.getInt(columIndex);
                    daten.add(id1+"");                      
                }
            } 
            Log.v("vid id", ""+daten.get(position));

            int idData = Integer.parseInt(daten.get(position));

            saveVideo(idData);                              
        }
    });


}

public void saveVideo(int idData)
{
    String uriString = "content://media/external/video/media/" + idData;
    Uri uri = Uri.parse(uriString);
    File mVideoFile = new File(uriString);

    Log.v("testpfad", ""+ mVideoFile.getAbsolutePath() + " " + mVideoFile.getParentFile().getAbsolutePath() + " " + mVideoFile.exists());               
    mVideoFileLen = getDurationFromURI(uri);
    //setPreferences(mVideoFile.getAbsolutePath(), PICKED_VIDEO);
    //setPreferences(mVideoFileLen, VIDEO_LEN);     
    //startActivity(new Intent(this, Finished.class));  
}