Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QA/Bug] getting permission denied #141

Closed
Tanzin01 opened this issue May 6, 2024 · 2 comments
Closed

[QA/Bug] getting permission denied #141

Tanzin01 opened this issue May 6, 2024 · 2 comments

Comments

@Tanzin01
Copy link

Tanzin01 commented May 6, 2024

Library version: 1.5.5x.x
OS version: [Android 14]
Device model: [Samsung a14]

Describe the bug
[A clear and concise description of what the bug is]
Not sure if im doing something wrong but anyway, i should not get permission denied since i have picked the folder with saf.
Here is logcat-
{primary=[/storage/emulated/0/Bin/Table_EXCEL]}

Error reading Excel file
java.io.FileNotFoundException: /storage/emulated/0/Bin/Table_EXCEL/EXCEL/blockgamexlsx210324032224.xlsx: open failed: EACCES (Permission denied)
	at libcore.io.IoBridge.open(IoBridge.java:574)
	at java.io.FileInputStream.<init>(FileInputStream.java:160)
	at java.io.FileInputStream.<init>(FileInputStream.java:115)
	at com.example.sheetmyapplication11.ExcelHandler.ExcelHandler.readExcel(ExcelHandler.java:23)
	at com.example.sheetmyapplication11.fragments.TablescreenFragment.loadDataFromExcel(TablescreenFragment.kt:121)
	at com.example.sheetmyapplication11.fragments.TablescreenFragment.onViewCreated(TablescreenFragment.kt:93)
	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3137)
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1901)
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1825)
	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1762)
	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547)
	at android.os.Handler.handleCallback(Handler.java:958)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:230)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8893)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
	at libcore.io.Linux.open(Native Method)
	at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
	at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
	at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8756)
	at libcore.io.IoBridge.open(IoBridge.java:560)
	... 20 more

To Reproduce
[Explain the steps to reproduce]

  1. i have the file path save in preference
  2. used a library with the path as parameter which in turn used java io

A bit code-

 val grantedPaths = DocumentFileCompat.getAccessibleAbsolutePaths(this)
                        grantedPaths.forEach { (key, value) ->
                            if(value != null )
                            {
                            
                                Preference.fileStoragePath = removeFirstLast( value.toString() )
                                Log.d("MyTag", Preference.fileStoragePath )
                   ```

**Stacktrace**
[If applicable]
@Tanzin01
Copy link
Author

Tanzin01 commented May 7, 2024

Nvm i got it

@anggrayudi
Copy link
Owner

Remember to always use DocumentFile, instead of java.io.File for Android 10+. Here're some snippets to help you:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(requireContext());
String fallbackFolder = PublicDirectory.DOWNLOADS.getAbsolutePath();
String saveLocationPath = preferences.getString(PREF_SAVE_LOCATION, fallbackFolder);
DocumentFile saveLocationFolder = DocumentFileCompat.fromFullPath(requireContext(), saveLocationPath, DocumentFileType.FOLDER, true);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants