We have detected that your app contains the Request Legacy External Storage tag in the manifest file for one or more app or APK packages - request

We have detected that your app contains the Request Legacy External Storage tag in the manifest file for one or more app or APK packages.
Developers who have apps on devices running Android OS 11 or later should use the Subsidiary Storage feature to give users better control over accessing the storage space available on their device. To launch your app on Android OS 11 or later after May 5, you need to perform one of the following steps:
Update your app to use privacy best practices such as Storage Access Framework or Media Store API
Update your app to announce the permission to access all files (MANAGE_EXTERNAL_STORAGE) in the manifest file, and to complete the statement of access permission to all files in the Play Console as of May 5
Completely remove the permission to access all files from your app
For apps targeting Android 11, the request Legacy External Storage tag will be ignored. You have to use the access permission to all files to retain access to external storage space.
Applications that require access to all files without permission to use will be removed from Google Play, and you will not be able to publish updates.
I want someone to help me

if your targetSdk is not 30 you can keep using that flag
android:requestLegacyExternalStorage="true"
And you don' t have to do anything.
But developers should do targetSdk = 30 in November.
I share answer which came from google:
"you can continue to use requestLegacyExternalStorage after May 5th since you are not targeting Android 11. You do not need to do anything before May 5th."
In our application targetSdk = 29 and we use requestLegacyExternalStorage. If you are in the same condition, you don' t have to do anything for now.
If in your application targetSDK = 30 you have two option:
if your application is need access all files in device, use MANAGE_EXTERNAL_STORAGE. But you should submit a form for this permission.
Or you can use Storage access framework or the MediaStore API to handle your file access features.

Related

System unauthorized access exception UWP Access to path is denied

I want to use
DirectoryInfo source C:\Users\admin\Desktop\Server:
source.GetDirectories();
I got System.UnauthorizedAccessException:
'Access to the path 'C:\Users\admin\Desktop\Server' is denied.'
I have UWP application. How to get permission to read and write folders/files from my UWP application?
UWP apps were designed to be safer for users to install - by the fact they run in sandbox and do not have most permissions by default the user knows the app can't cause any damage to her PC or data. This includes access to file system - you are allowed to access several specific paths on the PC - including app install location, app data folder. You can request additional locations like libraries, etc.
For arbitrary locations you have two options:
Use the FolderPicker (see Docs). User will select the desired folder and you get a StorageFolder instance through which you can freely access it. You can even store the permission to this folder over app restarts using FutureAccessList (see Docs) which will give you a token by which you can retrieve the StorageFolder instance in the future.
Declare the broadFileSystemAccess capability. This will give you full access to the filesystem via the StorageFolder and StorageFile APIs (but not via the classic System.IO API). This permission is a restricted one however, so it will be verified during Microsoft Store certification process and your app must have a good reason for actually needing this.

Codename One Preferences/Storage permissions

I have developed and published an app in Google Play Store, which only send simple String request to REST API and store the results in the Preferences. The same app is also submitted to Windows Store for publication, however it was rejected due to the following reason:
The app declares use of the sensitive capability [musicLibrary, picturesLibrary, videosLibrary] without appearing to access the declared capability. Please removed the sensitive capability declaration and re-submit the app.
Upon inspection to Google Play Store submission, I noticed the same permissions are requested:
This app has access to:Photos/Media/Filesread the contents of your USB storagemodify or delete the contents of your USB storageStorageread the contents of your USB storagemodify or delete the contents of your USB storageOtherreceive data from Internetview network connectionsfull network accessprevent device from sleeping
So my question is, do Preferences really need these permissions, or can I set some kind of build hints to remove these permission requests, especially for UWP build? I have also tried to set android.blockExternalStoragePermission build hint, but the permissions are still requested in Android build. I have yet to try iOS build since currently I don't have Apple Developer account.
Thank you very much in advance.
Edit #1 (23/10/2018):
Upon further inspection, I found that I have mistakenly uploaded the version that didn't declare android.blockExternalStoragePermission to Google Play Store, so all good on Android version.
Currently I'm not using any of cn1libs, and here's the list of all classes imported in my application:
java.util.HashMapjava.util.Mapjava.util.Randomcom.codename1.components.InfiniteProgresscom.codename1.components.ToastBarcom.codename1.components.ToastBar.Statuscom.codename1.io.CharArrayReadercom.codename1.io.JSONParsercom.codename1.io.Logcom.codename1.io.NetworkManagercom.codename1.io.Preferencescom.codename1.io.rest.Responsecom.codename1.io.rest.Restcom.codename1.l10n.L10NManagercom.codename1.ui.Buttoncom.codename1.ui.Componentcom.codename1.ui.Containercom.codename1.ui.Dialogcom.codename1.ui.FontImagecom.codename1.ui.Formcom.codename1.ui.Labelcom.codename1.ui.events.ActionEventcom.codename1.ui.events.ActionListenercom.codename1.ui.layouts.BorderLayoutcom.codename1.ui.layouts.FlowLayoutcom.codename1.ui.layouts.GridLayoutcom.codename1.ui.plaf.Bordercom.codename1.ui.plaf.Stylecom.codename1.ui.plaf.UIManagercom.codename1.ui.util.Resources
So my original question remain, how do I set the build hints to prevent the same external storage read/write permission in Windows and iOS?
See the section titled "Android Permissions" here, for a list of some API's that might trigger extra permissions. I suggest extracting the manifest from the XML and inspecting it. It should include two permissions based on your description you should have two permissions there:
android.permission.WRITE_EXTERNAL_STORAGE - which you should have been disabled when you applied android.blockExternalStoragePermission
android.permission.INTERNET - this one you actually need
I'm assuming you have a permission for media access and here it becomes a question of where it came from?
Did you use a cn1lib that might include a feature that triggers this?
Do you have a feature in the app that isn't active yet?
Once you have the specific name or results of this investigation comment here and I'll revise the answer with more details.

force default version of google appengine to update on deployment

I have a Java based web application running on google appengine that depends on data in the datastore. When I update this backend data and deploy. I can see the data change immediately if I access the url 1-dot-myapp.appspot.com. I cannot get the default version of the url (myapp.appspot.com) to update on another device unless I access the full specific version of the url.
How can I force the default version of the application to update on deployment?
Thank you
I went back and looked at my cookies information. 1-dot-myapp.appspot.com only has a _ga cookie, the entry for myapp.appspot.com has 3 cookie values: application cache, ACID, and _ga. I was surprised that 1-dot-myapp.appspot.com did not have an application cache value in the cookie. So now I guess my question is. How can I force the application cache to renew as desired.
What I came up with was to either remove reference to my manifest file from my html or to rename my manifest file. So when ever I want to for the client browser to update the cache I redploy with a newly named manifest file. The manifst file is renamed with a version number like manifest2.mf. Then my build modifies all references for manifest to the newly name manifest file i.e. manifest2.mf. My html files and my appengine.xml file then us manifest2.mf . these changes seem to force the client browsers to update their cache.

Can I use local storage for a mobile HTML5 webapp as a fallback when user loses internet access?

I'm making a mobile HTML5 webapp and I'm wondering if I can use local storage to enable users to still use the app when they lose internet access.
The basic idea would be that when they have wi-fi / 3G they download the HTML and data, but when they lose internet access they can at least access the last version with old cached data (with a warning that data may not be up to date until they get internet access again).
Is this possible with local storage ?
Certainly. One of the purposes with localStorage is to enable offline applications.
you can check (see here for details):
window.navigator.onLine
to see if you are online or offline, or simply:
window.addEventListener("offline", offlineFunc, false)
window.addEventListener("online", onlineFunc, false)
and if offline you serve the stored content from localStorage by updating the page partially.
Another way of doing this is to use a cache manifest.
Here you can define which files shall be available if browser become offline, and which require network and so forth.
See here for details on that:
https://en.wikipedia.org/wiki/Cache_manifest_in_HTML5
http://diveintohtml5.info/offline.html
Besides from localStorage you can also use IndexedDB which also allow you to store Blobs (or files) (File API is coming, currently only for Chrome).

Read log files on JBoss AS 7

I have an application running on JBoss AS 7 and creating log files in /standalone/log.
For security reasons I not allowed to browse JBoss directories.
Is there any build-in application to read these logs files from a browser ?
NB : I cannot use admin console either.
No, nothing built in. You can have the admins configure the logging service to put logs where you can get to them, or you can configure the logger to capture logs and post to a database or other.
Not yet, but there are some requests for it (one by me, BTW ;-) and it might appear in WildFlz 8. Hopefully. (Vote on them if you like.)
WFLY-1048 Allow hooking into logging subsystem through Management API
WFLY-1144 Provide the ability to view server logs through the web interface
WFLY-280 Provide an operation to retrieve the last 10 errors from the log
Until then, I suggest to ask the admins to allow access to that one particular log file.
If that doesn't pass through, you may declare dependency of your deployment on a logging service's modules (Dependencies: ... in MANIFEST.MF) and the log manager in JVM. Unless there's some additional obstacle like security manager or so.

Resources