It is necessary to remove "android:maxSdkVersion=“29”?

a doubt, it is necessary to remove "android:maxSdkVersion=“29”?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" />

Can you explain why you think so?
Also let us know, why are you asking in this thread, which is about Manage External Storage permission…

Taifun

forget I asked something, if you used half the time you use to correct those who post something wrong, kodular would be something really serious, we pay for a poor quality service, the problems are there, just see the amount of posts that exist on forum about, “Permission and Android 11”. I solved my problem by myself and in other forums.
But I’ll leave a tip, “Help with solving real problems and not just moderating the forum!”
Thanks

Great. Then what about providing your solution to help others with the same problem in future?
Taifun

Actually not, because that’s exactly how it should be (since WRITE no longer exists on Android 11+).

But you have to remove it in certain cases, since the bugs (File, Canvas,…) regarding WRITE permission on Android 11+ have still not been fixed (same on AI2) … (I’ve reported about this dozens of times on all the AI2 forums).


So you’re partly right. However, your question could have been a bit more specific.

but the question is simple “it is necessary to remove” yes or no

this could be easily resolved if the manifest was released for configuration, just as you choose the min target, you could have a default manifest and change it as needed

The question may be simple, but the answer is NOT.
It is as I have explained. In Kodular, there is no other option than to customize the manifest if you want certain components to store files in one of the shared folders on Android 11+. In these cases, WRITE must be incorretly declared in the Manifest on Android 11 as well.

With AI2, WRITE permission can also be declared in the Manifest on Android 11+ by setting DefaultFileScope = Legacy. However, this (misleading and nonsensical) option does not exist with Kodular.

We’re talking about a tag that doesn’t matter for Android 5+ or 11+ (in my opinion, it shouldn’t even exist as long as Kodular or AI2 doesn’t solve this problem)

Just remove it from the line and everything works.

Tested it here, used APKTools and edited my manifest by removing this tag, it’s working on all android versions

I just don’t understand why in AI2 or Kodular it is not possible to have a textbox, where you can build your manifest from a standard manifest!

I don’t know if it’s impossible or if it’s unwillingness to leave the manifest configurable!

It’s just an idea, no offense, I think it’s better to ask and understand, than to have a question and no one answers!

Creates all unnecessary confusion, just remove this tag, or find a way to edit the manifest

Because during compile time it is already too late to modify the manifest… this has to be done before by adding components or extensions…

There has been a manifest generator solution by @atomdeveloper, which could create an extension providing a manifest of your choice, unfortunately that project has been abandoned

Taifun

I understand…
but I do not accept!
hahahaha

a global variable, a json, an xml, can be created and replaced at the time of compilation

if there is a custom manifest it assumes it, otherwise it uses the original manifest.

conditions exist, hence my question:

Is it a lack of Ai2 resource or is it a lack of will?

You don’t seem to have understood the problem yet.

  1. Storage permissions are requested unnecessarily and incorrectly on Android 11+.
  2. If a component can save something (file, canvas,…) WRITE permission is incorrectly requested, which no longer exists since Android 11.
  3. Since WRITE no longer exists, it can neither be requested nor granted. In addition, this permission is not required at all on Android 11+.
  4. The real bug is that saving/copying a file to one of the shared folders is only allowed by Kodular/AI2 if WRITE is also declared in the manifest for Android 11+.

To make it short:

  1. WRITE is only required up to API 29. So this line in the manifest is correct:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
  2. As of Android 11, WRITE may no longer be requested by any component.

Summary:
So the solution to the problem is simply to NEVER request WRITE permission on Android 11+. And to finally answer your initial question (it is necessary to remove "android:maxSdkVersion=“29”?), the definitive answer is: NO. Because the underlying bug (Kodular & AI2) should finally be fixed. That is necessary and long overdue.


Here’s a deeper dive into the matter, as well as a blueprint for solving all such storage permissions issues.

As I said before, there is no way in Kodular to declare WRITE in the Manifest on Android 11+. This is also not possible with any extension. The permissions are later declared via the build server in the Manifest (and other declarations via extensions are then overwritten by the build server).

Therefore you have to do it manually in the Manifest afterwards.

Note: It doesn’t matter what storage permissions are declared in the Manifest. The only decisive factor is whether and when these are (automatically) requested. That’s the problem.

I try to share knowledge with you, editing the manifest using another tool after generating the APK, is a tremendously poorly made invention.

Not to mention if you tell a person that they need to “rebuild” their own APP it doesn’t seem right!

But Yes, It Works editing the manifest after generating the APK

Only Ai2 as I mentioned above could create a manifest edit.
“We’re talking about people from MIT” and they can’t do this?
JOKE!

More apparently, talking to you and disagreeing with your voices is something that should not be done “Never disagree with a King”.

Therefore we will close this post and each with their problems.

For the third and last time:
There is no need to edit the Manifest at all once the underlying bugs (AI2 & Kodular) are finally fixed.