Removing duplicate permission from AndroidManifest.xml - android

The AndroidManifest.xml contains these (and some more) permissions:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
The WRITE_EXTERNAL_STORAGE is contained two times. So I remove one and reorder:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
The audio recorder (https://github.com/3llomi/RecordView) normally requests storage access permission and microphone access permission. But after the change it does not request the storage access anymore and therefore the record view does not work.
I uninstall the app from the device for each manifest change to reset permissions.
How is it possible that removing a duplicate line causes this?

The merged view of the AndroidManifest.xml revealed that another library also declares this permission with maxSdkVersion="18":
The app was running on API>18, I assume therefore it did not request the permission. Removing maxSdkVersion made the storage permission appear again and the recorder view worked:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:remove="android:maxSdkVersion" />
My guess is that because WRITE_EXTERNAL_STORAGE was contained two times in the AndroidManifest.xml, the manifest merging process added the maxSdkVersion only to one of them. The other WRITE_EXTERNAL_STORAGE had no maxSdkVersion hence the app was requesting the permission also on API>18.

Related

Android permissions ask something I don't want

I'm making a React-Native app and in the AndroidManifest.xml file, I ask some things :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.RECORD_VIDEO"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:maxSdkVersion="29"/>
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
As you can see, I never ask my app to access to the contacts.
However, when I build my app, she ask me the permission to access to my contacts.
Have you an idea ? Thanks !
You can check which dependency has added the permission by looking at the
android/app/build/outputs/logs/manifest-merger-debug-report.txt log.

The Play Console asks me to remove the location permission in every version

I have a special application for kids on the Play Console. I'm trying to update with the new version. However, I keep getting the following error.
I'm even trying to submit a pre-approved version from the library for review, but it shows the same error without submitting for review.
If your target audience only includes children under 13, you should remove the request for location permission from your app. Please go to the app content section.
I searched for my application code and sub-libraries, but location information is not accessed in any way.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
This is the case with permissions perceived for apk in the app package explorer on the Play Console.
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
tools:node="remove"/>
add this to your manifest then try it will solve your problem.

Which permissions do I need to call requestPermission() - Android

I'm setting up some permissions in my AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
I request the permission on runtime for all of those permissions.
But somehow the permission REQUEST_INSTALL_PACKAGES does not need to call requestPermission(). If I try to call it anyway, the popup never appears.
Is there a list of permissions i need to call at runtime?
My current android version is 8.0.0.
Thanks
Depends on type of permission you are requesting for. There are two kind of permissions in Android: Normal and Dangerous Permissions
If there are dangerous, you must request for it at runtime for API level 23 and above.
For more info you should read following documentation: https://developer.android.com/guide/topics/permissions/requesting.html#normal-dangerous

Android Media/Photo/Files Permission when Installing the application

I just uploaded my SMS application on Google play store but the problem is that whenever user install the application the app needs access to Photo/Media/Files too. However i donot write this permission in my manifest. please tell me whats the issue
I write following permissions in my app:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
But it still wants to access to media/photo/files
What is the issue?
However i donot write this permission in my manifest.
Yes, you do:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
What is the issue?
You are asking for a permission (WRITE_EXTERNAL_STORAGE) from the STORAGE permission group.

My App is asking "Microphone: record audio" permission even thought i am not using it

below are permission that i am using
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
there is no microphone permission in my Manifest then why playstore is asking for "MicroPhone" permission while app installation
Although dmitriyzaitsev 's answer is right, I wanted to append it with a method for checking how you can find out which modules add which permissions. To do that, you need to go to the following file:
app/build/outputs/logs/manifest-merger-<app_flavor>-report.txt
There you can search for the permission you are interested in, e.g. RECORD_AUDIO. Your result should look something like this:
ADDED from [com.google.firebase:firebase-common:11.2.2] /Users/jakubkomorowski/.gradle/caches/transforms-1/files-1.1/firebase-common-11.2.2.aar/7f3b39613ed1e03ef066f866e7495b17/AndroidManifest.xml:6:79-143
uses-permission#android.permission.RECORD_AUDIO
You can find out more in the google developer documentation
It seems your app module depends on some other libraries that use this permission.
It's not necessary that microphone audio permission is declared in your AndroidManifest. It can be declared in 3rd-party library.

Categories

Resources