这就是我所做的
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/