Android 11 / local ICS file / permissions


  • Hi,

    ICSx doesn’t have the permission to manage all files ( https://developer.android.com/training/data-storage/manage-all-files ) and thus doesn’t have access to local .ics files it could have had access before Android 11. After upgrading from 10 to 11 my config is no longer working (EACCESS permission denied).

    Just wanted to share this in case other people meet the same situation.

    I still have to find a folder that ICSx could reach, these haven’t worked:

    • Download/
    • Android/media/
  • developer

    @hiqua Hi,

    May I ask how the .ics files are brought to your device?


  • @rfc2822 I use syncthing to synchronize one folder.

    To try the few other folders, I just copied the file around.

    Is there another workflow that would work better?


  • I’m having the same issue. Trying to create a workflow with a local synchronised ICS file, which is not working due to ICSx5 not having proper file permissions. Very strange, as the “file:” URI is supported. Issue on Android 10 for me.


  • By the way I can reproduce the error in an AVD, so I don’t think it’s something specific to my device.

    • Pixel 4 API 30
    • upload ICS via file explorer in Android Studio, to sdcard/cal.ics
    • start ICSx and try to configure it to use file:///sdcard/cal.ics

    If I modify the sdk to 29, it works fine:

            targetSdkVersion 29
    

    So this has something to do with the changes in permissions of Android 11.


  • This also works, but doesn’t help at least for the Google Playstore:

    diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
    index 8c0c897..d319a7e 100644
    --- a/app/src/main/AndroidManifest.xml
    +++ b/app/src/main/AndroidManifest.xml
    @@ -15,6 +15,7 @@
             android:maxSdkVersion="22" />
         <!-- add/update/delete events -->
         <uses-permission android:name="android.permission.READ_CALENDAR" />
    +    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
         <uses-permission android:name="android.permission.WRITE_CALENDAR" />
         <!-- view/change the sync interval and whether the account is synchronizing -->
         <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    @@ -39,6 +40,7 @@
             android:name=".MyApp"
             android:networkSecurityConfig="@xml/network_security"
             android:requestLegacyExternalStorage="true"
    +        android:preserveLegacyExternalStorage="true"
             android:theme="@style/AppTheme"
             tools:ignore="UnusedAttribute">
     
    @@ -158,4 +160,4 @@
                 android:parentActivityName=".ui.CalendarListActivity" />
         </application>
     
    -</manifest>
    \ No newline at end of file
    +</manifest>
    

    After installation, I manually set the permissions so that ICSx can manage all files.

    Ideally writing file:/// would just open a proper file picker (or there would be an icon for this case).

Similar topics