Just a heads up.. I re-opened the issue after thinking that Steve had fixed it on Friday. Some devices are still showing the error https://github.com/codenameone/CodenameOne/issues/3204
I have one such glitched device. As I mentioned on Github, feel free to ask me to test things On Fri, 16 Apr 2021 at 09:11, Javier Anton <[email protected]> wrote: > Thanks > > On Fri, 16 Apr 2021 at 04:50, Shai Almog <[email protected]> wrote: > >> Hi, >> I've asked Steve to look into this issue and raised its priority to >> critical. >> >> On Friday, April 16, 2021 at 12:10:34 AM UTC+3 [email protected] wrote: >> >>> Darn it >>> >>> Got this message today. This unresolved, high-priority, 8-months-old >>> issue is finally coming to bite in the ass >>> https://github.com/codenameone/CodenameOne/issues/3204 >>> We won't be able to update or publish any existing app that uses the >>> Gallery on Android unless this is resolved. The workaround proposed by Shai >>> in the issue is going to be shut down on the 5th of May >>> >>> We've detected that your app contains the requestLegacyExternalStorage flag >>> in the manifest file of one or more of your app bundles or APKs. >>> >>> Developers with apps on devices running Android 11+ must use scoped >>> storage to give users better access control over their device storage. To >>> release your app on Android 11 or newer after 5 May, you must either: >>> >>> - Update your app to use more privacy-friendly best practices, such >>> as the storage access framework or Media Store API >>> - Update your app to declare the All files access ( >>> MANAGE_EXTERNAL_STORAGE) permission in the manifest file, and >>> complete the All files access permission declaration in Play Console >>> from 5 >>> May >>> - Remove the All files access permission from your app entirely >>> >>> For apps targeting Android 11, the requestLegacyExternalStorage flag >>> will be ignored. You must use the All files access permission to retain >>> broad access. >>> >>> Apps requesting access to the All files access permission without a >>> permitted use will be removed from Google Play, and you won't be able to >>> publish updates. >>> >>> I am not 100% sure of what needs fixing in CN1, but I recently had to do >>> some native android work where I needed to read images from an intent in >>> the most up-to-date way. The below code allowed me to get these images from >>> an intent (the code gets images shared into an app with the latest APIs >>> etc). Just sharing in case it helps >>> >>> >>> Intent intent = getIntent(); >>> >>> Uri sharedFileUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); >>> >>> if(sharedFileUri != null) >>> { >>> FileInputStream input = null; >>> FileOutputStream output = null; >>> try >>> { >>> //first get filename >>> String originalFieName = getFileName(sharedFileUri); >>> String filePath = new File(getCacheDir(), >>> originalFieName).getAbsolutePath(); >>> android.os.ParcelFileDescriptor pfd = >>> getContentResolver().openFileDescriptor(sharedFileUri, "r"); >>> if(pfd != null) >>> { >>> FileDescriptor fd = pfd.getFileDescriptor(); >>> input = new FileInputStream(fd); >>> output = new FileOutputStream(filePath); >>> int read; >>> byte[] bytes = new byte[4096]; >>> while ((read = input.read(bytes)) != -1) { >>> output.write(bytes, 0, read); >>> } >>> File sharedFile = new File(filePath); >>> String finalPath = sharedFile.getPath();//this is the final >>> image path to be used >>> } >>> }catch(Exception ex){} >>> finally{ >>> try { >>> input.close(); >>> output.close(); >>> } catch (Exception ignored) {} >>> } >>> } >>> } >>> >>> public String getFileName(Uri uri) { >>> try >>> { >>> String result = null; >>> if (uri.getScheme().equals("content")) { >>> Cursor cursor = getContentResolver().query(uri, null, null, null, >>> null); >>> try { >>> if (cursor != null && cursor.moveToFirst()) { >>> result = >>> cursor.getString(cursor.getColumnIndex(android.provider.OpenableColumns.DISPLAY_NAME)); >>> } >>> } finally { >>> cursor.close(); >>> } >>> } >>> if (result == null) { >>> result = uri.getPath(); >>> int cut = result.lastIndexOf('/'); >>> if (cut != -1) { >>> result = result.substring(cut + 1); >>> } >>> } >>> return result; >>> }catch(Exception e) >>> { >>> return "temp_file"; >>> } >>> } >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "CodenameOne Discussions" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/codenameone-discussions/1179bb13-e115-4969-b3f2-400787765742n%40googlegroups.com >> <https://groups.google.com/d/msgid/codenameone-discussions/1179bb13-e115-4969-b3f2-400787765742n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "CodenameOne Discussions" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/codenameone-discussions/CAG90yJ2znQzHRjXk7yP6Mi4%2BuKXZet6hYErmVyEtmE%2BDe1%3D1hA%40mail.gmail.com.
