My firebase application is running perfectly on my android device without having added the permission.INTERNET flag. I installed Firebase directly from gradle. I am aware that adding Firebase through the project structure window in android studio will add the permissions.INTERNET for you. But this is not the case, my Android manifest has nothing in regards to permission.INTERNET yet is still fully functional...
I havent been able to find any info on this... Is this because its now run by Google?
The documentation for manifest merging states:
During the build process, the manifest merge process stores a record
of each merge transaction in the
manifest-merger-{productFlavor}-report.txt file in the module
build/outputs/logs folder. A different log file is generated for each
of the module's build variants.
You can look there for a detailed explanation of which library is providing the permission.
Or since you are using Android Studio, you can use Ctrl-Shift-N and type "AndroidManifest.xml" to see a dropdown menu of all the manifests in your build and open them to see what they contain.
A feature was added to Android Studio 2.2 to show the results of manifest merging. When viewing the manifest in an Editor window, select the Merged Manifest tab at the bottom of the window to see the contributors to the manifest.
In my build, which includes a number of Firebase libraries, the manifest that adds the INTERNET permission appears to be:
com.google.firebase\firebase-analytics\9.4.0\AndroidManifest.xml
I was manually managing my Mobile Data's permissions and I discover that, if I block mobile data on "Google Backup Transport", I cannot connect to Firebase.
I really think this is the reason You can use Your app even without INTERNET permissions.
Related
I want to disable android.permission.ACCESS_BACKGROUND_LOCATION in my Xamarin app because I dont need it anymore but when I uncheck the checkbox in the Properties tab:
And delete the permission request in the android.manifest file itself:
The permission request still seems to be there according to the manifest file from the archived .aab file and also according to the google play dev console.
I also searched my entire solution and dident find any other references.
Is there anything that causes this request or anything I forgot to delete?
Check the merged AndroidManifest.xml in obj\Release\nnn\.
If it is there, then something in your build process has added it.
If it is not there, then add to your question more details about how you build and launch to google play dev console - what you are seeing at dev console should match what is in the obj version of that file.
It was defined in the AssemblyInfo.cs and after removing it there everything was fixed.
I added some libraries to an Android app and after upload to the Google Play Store I got this warning:
The main manifest file does not declare this permission, so I assume it comes from a library.
I then check out the source code of the previous version, which did not use this permission.
Looking at the merged manifest file in Android Studio, I still see the permission:
When I click on "Go to declaration" for this permission, it takes me to the main manifest file, which does not declare this permission.
I tried to clean and rebuild the project and restart Android Studio but the permission still shows in the merged manifest tab in Android Studio. It shows in the debug and release build variant.
Why is that?
After building your app you should be able to find a manifest merger report under app/build/outputs/logs. Among other things, this file lists the origin of every permission that has been added to the merged manifest.
I've looked through my whole project directory, and for the life of me, I cannot find where it would think it is an Android Auto. Going through this page:
https://developer.android.com/training/auto/start/index.html#auto-metadata
Nowhere in my Android manifest, do I set an automotive.
Could a library add to the manifest to make it an Automotive app?
Are there other things in the manifest I can check?
Please cross check in your res/xml file and see if you have any media or notification
under - uses element.
You can also check in your manifest file if you have added Car GMS package in the meta-data element.
<meta-data
android:name="com.google.android.gms.car.application"
android:resource="#xml/your_auto_xml_file"
/>
If the library you are importing in happens to be from the merchant who builds up the customized DHU, then these lib can infuse those properties in your project. One easy way would be to remove the library and see if it resolves the issue.
I am trying to upload a apk to the google play store but its saying to my surprise that i am using the following permission:
Your APK is using permissions that require a privacy policy: (android.permission.RECORD_AUDIO).
so i searched the entire IDE for "android.permission.RECORD_AUDIO" but i cant find it. How can i find out which 3rd party is requesting this ? There should be a way to view in the manifest merger process all the manifest but when i hit shift twice and search manifest only the local manifest are showing up. The other is bit code and i cant view it.
In project build directory, there is a manifest merger report.
In my case, it is located under [ProjectRoot]/app/build/outputs/logs/manifest-merger-debug-report.txt
From this file, your can find where the permission is added. For example:
uses-permission#android.permission.RECORD_AUDIO
ADDED from /home/jack/AndroidProject/ApiDemos/app/src/main/AndroidManifest.xml:45:5-71
android:name
ADDED from /home/jack/AndroidProject/ApiDemos/app/src/main/AndroidManifest.xml:45:22-68
uses-permission#android.permission.CAMERA
ADDED from /home/jack/AndroidProject/ApiDemos/app/src/main/AndroidManifest.xml:49:5-65
android:name
ADDED from /home/jack/AndroidProject/ApiDemos/app/src/main/AndroidManifest.xml:49:22-62
You can use Merged Manifest[About] feature
Open AndroidManifest.xml -> Merged Manifest
If the library is open source you can check their source code for the permissions they have used.
They usually list the permission on their Read.me files.
Even if they are proprietary libs they will list the permissions they will be using otherwise their security is questionable.
I can create an app with Delphi XE5 (update 2, hotfix 1 -- but same was true in Update 1) that runs when it is created as a DEBUG version. But when I create it as a RELEASE-APPLICATION STORE version Internet stops working.
It seems to overwrite the android.manifest.xml file and take the INTERNET setting out of it. I have tried various ways of manually updating the file and deploying. But you have to run BUILD again to get the change to get incorporated -- and that overwrites the file again.
The app is simple app using REST. Also has a browser, with URL set in another part. Works fine in DEBUG version. In RELEASE-APPLICATION STORE version on REST call it says SOCKET #13 error, also web page does not work. So definitely no INTERNET.
Any thoughts, order for doing the manual change, or ideas would be greatly appreciated.
FOLLOW-UP --- FOUND THE SOLUTION
Unfortunately user permission settings are not not working completely in my environment. I change the INTERNET setting to TRUE in PROJECT | OPTIONS | USER PERMISSIONS and compile/build and the INTERNET setting gets eliminated (overwritten) from the AndroidManifest.xml file created in the project \release folder. In \debug version it is there (INTERNET setting) and is fine.
Solution for me, at least, is to update the AndroidManifest.template.xml file and add the INTERNET setting there -- so it is copied to both \release and \debug versions of the AndroidManifest.xml files.
So my AndroidManifest.Template.xml file .. in the project root looks like this:
... header and other info
<uses-permission android:name="android.permission.INTERNET" />
... other stuff and footer for file
The template files is used to create the \release and \debug versions of the AndroidManifest.xml files so it forces that setting to be put in that file.
This worked and cleared up the socket 13 error I was getting, and no INTERNET access on the release Android versions. YAY!!!
You have to go into the Project Options and enable the INTERNET permission. It is enabled by default for Debug builds, and disabled by default for Release builds.
I had the same problem. And setting project settings have no effect on release version. I think it is some kind of bug, because that effect appears only with INTERNET option. My solution is to set this option manually in androidManifest.template. In that case, it is working fine.
I put mine in after ..uses-permission... and it worked fine.