java - 如何在android studio中的视频播放器中获取视频文件目录

标签 java android sqlite 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 is not exist! 2019-11-12 15:09:06.901 6648-6648/com.abhijeet.video E/Minikin: Could not get cmap table size! 2019-11-12 15:09:12.444 6648-6699/com.abhijeet.video E/vndksupport: Could not load vendor/lib64/egl/libGLES_mali.so from sphal namespace: dlopen failed: library "vendor/lib64/egl/libGLES_mali.so" not found. 2019-11-12 15:11:53.515 6648-6648/com.abhijeet.video E/AndroidRuntime: FATAL EXCEPTION: main Process: com.abhijeet.video, PID: 6648 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abhijeet.video/com.abhijeet.video.MainActivity}: android.database.sqlite.SQLiteException: near "?": syntax error (Sqlite code 1): , while compiling: SELECT _data, _display_name, _id, _data FROM video WHERE (_datalike?) ORDER BY datetaken DESC, (OS error - 2:No such file or directory) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5477) at android.app.ActivityThread.-wrap19(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2000) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7529) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) Caused by: android.database.sqlite.SQLiteException: near "?": syntax error (Sqlite code 1): , while compiling: SELECT _data, _display_name, _id, _data FROM video WHERE (_datalike?) ORDER BY datetaken DESC, (OS error - 2:No such file or directory) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) at android.content.ContentProviderProxy.query(ContentProviderNative.java:418) at android.content.ContentResolver.query(ContentResolver.java:766) at android.content.ContentResolver.query(ContentResolver.java:716) at android.content.ContentResolver.query(ContentResolver.java:667) at com.abhijeet.video.fragenment_vidoe.video.fachfromgalary(video.java:97) at com.abhijeet.video.fragenment_vidoe.video.ini(video.java:78) at com.abhijeet.video.fragenment_vidoe.video.access$000(video.java:46) at com.abhijeet.video.fragenment_vidoe.video$1.onPermissionGranted(video.java:123) at com.karumi.dexter.MultiplePermissionsListenerToPermissionListenerAdapter.onPermissionsChecked(Unknown Source:35) at com.karumi.dexter.DexterInstance$1.run(Unknown Source:43) at com.karumi.dexter.MainThread.execute(Unknown Source:6) at com.karumi.dexter.DexterInstance.checkMultiplePermissions(Unknown Source:56) at com.karumi.dexter.DexterInstance.checkPermissions(Unknown Source:0) at com.karumi.dexter.Dexter.check(Unknown Source:10) at com.abhijeet.video.fragenment_vidoe.video.runtimepermision(video.java:137) at com.abhijeet.video.fragenment_vidoe.video.onCreateView(video.java:65) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:620) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1339) at android.app.Activity.performStart(Activity.java:7403) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5477)  at android.app.ActivityThread.-wrap19(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2000)  at android.os.Handler.dispatchMessage(Handler.java:108)  at android.os.Looper.loop(Looper.java:166)  at android.app.ActivityThread.main(ActivityThread.java:7529)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) 

最佳答案

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

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

像这样

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

关于java - 如何在android studio中的视频播放器中获取视频文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58816563/

相关文章:

java - 启用/禁用 JButton 只能运行一次

r - 使用 RSQLite 和 bind.data 批量更新 R 中的 SQLite 列

java - 快速傅里叶变换的数据流图或伪代码?

java - 将连字符分隔的单词(例如 "do-some-stuff")转换为较小的驼峰变体(例如 "doSomeStuff")的最优雅方法是什么?

安卓 : Text disappears frequently in webview when LAYER_TYPE_SOFTWARE is set

Android ActionBar 溢出菜单样式

c# - 如何使用 SQLite 数据库中的数据填充 ListView

mysql - 如何使用 sQlite 获取每组的最大值直到它返回零

java - Mockito 抛出 UnfinishedVerificationException(可能与本地方法调用有关)

java - 为什么我的 android-notification 没有出现?