Skip to content
This repository has been archived by the owner on Mar 30, 2024. It is now read-only.

Support for API 29 (Android 10) #40

Closed
mkruglikov opened this issue Sep 14, 2019 · 11 comments
Closed

Support for API 29 (Android 10) #40

mkruglikov opened this issue Sep 14, 2019 · 11 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@mkruglikov
Copy link

mkruglikov commented Sep 14, 2019

I'm getting an SQLiteException when starting FilePickerActivity on a device with API 29. On API 28 it works fine.
There is a similar issue for another library.
Device: Android Studio emulator with android 10.0
Lib ver.: 1.2.2
App uses the latest AndroidX libs. compileSdkVersion is 29

I'm starting activity like this:

Intent intent = new Intent(getActivity(), FilePickerActivity.class);
                                intent.putExtra(FilePickerActivity.CONFIGS, new Configurations.Builder()
                                        .setCheckPermission(true)
                                        .setMaxSelection(1)
                                        .setShowAudios(false)
                                        .setShowImages(false)
                                        .setShowVideos(false)
                                        .setShowFiles(true)
                                        .setSuffixes("doc", "docx", "xls", "xlsx")
                                        .build());
                                startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE);

Logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.android.example' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'audio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1005-1207' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.android.example' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'anaudio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1005-1207' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
        at android.content.ContentResolver.query(ContentResolver.java:944)
        at android.content.ContentResolver.query(ContentResolver.java:880)
        at android.content.ContentResolver.query(ContentResolver.java:836)
        at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:145)
        at com.jaiselrahman.filepicker.loader.FileLoader.<init>(FileLoader.java:119)
        at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:63)
        at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:564)
        at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:573)
        at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:627)
        at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:179)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.loadFiles(FilePickerActivity.java:128)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:115)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
@jaiselrahman
Copy link
Owner

For now it is best to opt out of Scoped Storage feature.

<manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10 or higher. -->
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

Adding support for Scoped Storage may require breaking changes since

  • We can't access documents directly from Mediastore, need to use Storage Access Framework
  • DATA column is deprecated which is used to ignored files

Support will be added in upcoming releases. Any contributions are welcome.

@jaiselrahman jaiselrahman added enhancement New feature or request help wanted Extra attention is needed labels Oct 6, 2019
@jaiselrahman jaiselrahman changed the title SQLiteException on API 29 Support for API 29 (Android 10) Oct 31, 2019
@jaiselrahman jaiselrahman pinned this issue Oct 31, 2019
@enriqueg
Copy link

It is a great fix, but then crashing here:

Caused by android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderProxy.java:423)
at android.content.ContentResolver.query(ContentResolver.java:944)
at android.content.ContentResolver.query(ContentResolver.java:880)
at android.content.ContentResolver.query(ContentResolver.java:836)
at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:12)
at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:6)
at android.app.LoaderManagerImpl.createLoader(LoaderManagerImpl.java:564)
at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManagerImpl.java:573)
at android.app.LoaderManagerImpl.initLoader(LoaderManagerImpl.java:627)
at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:5)
at com.jaiselrahman.filepicker.activity.FilePickerActivity.b(FilePickerActivity.java:7)
at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:30)
at android.app.Activity.performCreate(Activity.java:7802)
at android.app.Activity.performCreate(Activity.java:7791)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

@jaiselrahman
Copy link
Owner

I am working on the fix, you can check it out here https://github.com/jaiselrahman/FilePicker/tree/feature/api29_support
or use the following dependency

implementation 'com.github.jaiselrahman:FilePicker:feature~api29_support-SNAPSHOT'

@enriqueg
Copy link

Very much appreciated, it is a great library! I will test this!

@enriqueg
Copy link

It is working now, such fantastic work, amazing!

@jaiselrahman
Copy link
Owner

Android 10 support has been added in version 1.3.0. Change log is here.

@jaiselrahman jaiselrahman unpinned this issue Nov 21, 2019
@neerajemorphis
Copy link

Not working on Android 10 :(
I am using 1.3.2 version of FilePicker, still returning null with getPath(), and getUri() won't work for me as expected, as I need the path only

@IrshadAndroid
Copy link

use android:requestLegacyExternalStorage="true" in your project

@MahmoudMabrok
Copy link

even after i add android:requestLegacyExternalStorage="true"
issue still exist we can not get "Path"

@msyafa
Copy link

msyafa commented Nov 16, 2020

android:requestLegacyExternalStorage="true" has been added and am using com.github.jaiselrahman:FilePicker:1.4.0-alpha01, but it still gives me the following exception on android 10:

Unable to start activity ComponentInfo{/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.ms.palladium' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'audio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' )) AND (invalid=0)) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC

@Rahmath22
Copy link

 Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.photo.photoframe' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'audio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC

How can we fix this issue?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

8 participants