首页 > 解决方案 > 如何在android studio的视频播放器中获取视频文件目录

问题描述

这就是我所做的,

public video() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate( R.layout.fragment_video, container, false );
    recyclerView = view.findViewById( R.id.recyvle );

    videomodelArrayList = new ArrayList<>();


    runtimepermision();


    return view;
}

private void ini() {
    LinearLayoutManager linearLayoutManager=new LinearLayoutManager( getContext());
//    GridLayoutManager linearLayoutManager = new GridLayoutManager( getContext() ,2);
    recyclerView.setHasFixedSize( true );

    recyclerView.setLayoutManager( linearLayoutManager );

    fachfromgalary();
}

private void fachfromgalary() {

    Uri uri;
    Cursor cursor;
    int coli_int_data, columb_index_filder_name, columb_id, thum;
    String absilutpathimage = null;
    uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    String[] projecter = {
            MediaStore.Video.Media._ID,MediaStore.MediaColumns.DATA,

           MediaStore.Video.DEFAULT_SORT_ORDER,

            MediaStore.Video.Thumbnails.DATA};
    String orderby = MediaStore.Images.Media.DATE_TAKEN;
    String selection= MediaStore.Video.Media.DATA+"like?";
    String []aray= new String[]{"%FolderName%"};
    cursor = getActivity().getContentResolver().query( uri, projecter, selection, aray, orderby + " DESC" );
    coli_int_data = cursor.getColumnIndexOrThrow( MediaStore.MediaColumns.DATA );

   //   columb_index_filder_name = cursor.getColumnIndexOrThrow( MediaStore.Video.Media.DISPLAY_NAME );
    //         columb_id=cursor.getColumnIndexOrThrow( MediaStore.Video.Media._ID );
    thum = cursor.getColumnIndexOrThrow( MediaStore.Video.Thumbnails.DATA );

    while (cursor.moveToNext()) {
        absilutpathimage = cursor.getString( coli_int_data );
        videomodel videomodel = new videomodel();
        videomodel.setBoolean_selected( false );
     //   videomodel.setStr_name( columb_index_filder_name );
        videomodel.setStr_path( absilutpathimage );
        videomodel.setStr_thumb( cursor.getString( thum ) );
        videomodelArrayList.add( videomodel );
    }

    videoadapter videoadapter = new videoadapter( getActivity().getApplicationContext(), videomodelArrayList,getActivity() );
    recyclerView.setAdapter( videoadapter );
}

private void runtimepermision() {
    Dexter.withActivity( getActivity() ).withPermission( Manifest.permission.READ_EXTERNAL_STORAGE ).withListener( new PermissionListener() {

        @Override
        public void onPermissionGranted(PermissionGrantedResponse response) {
            ini();
        }

        @Override
        public void onPermissionDenied(PermissionDeniedResponse response) {

        }

        @Override
        public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
            token.continuePermissionRequest();
        }


    } ).check();

错误日志:

2019-11-12 15:09:06.900 6648-6682/com.abhijeet.video E/MemoryLeakMonitorManager:MemoryLeakMonitor.jar 不存在!2019-11-12 15:09:06.901 6648-6648/com.abhijeet.video E/Minikin:无法获取 cmap 表大小!2019-11-12 15:09:12.444 6648-6699/com.abhijeet.video E/vndksupport:无法从 sphal 命名空间加载 vendor/lib64/egl/libGLES_mali.so:dlopen 失败:库“vendor/lib64/egl/ libGLES_mali.so" 未找到。2019-11-12 15:11:53.515 6648-6648/com.abhijeet.video E/AndroidRuntime:致命异常:主进程:com.abhijeet.video,PID:6648 java.lang.RuntimeException:无法启动活动 ComponentInfo{ com.abhijeet.video/com.abhijeet.video.MainActivity}:android.database.sqlite.SQLiteException:靠近“?”:语法错误(Sqlite 代码 1):,编译时:SELECT _data,_display_name,_id, 

标签: javaandroidsqliteandroid-studio

解决方案


首先,我认为您需要在“喜欢”中添加一个空格?喜欢?”

String selection= MediaStore.Video.Media.DATA+"like?";

像这样

String selection= MediaStore.Video.Media.DATA+" like?";

推荐阅读