I am making an Android Phonegap/Cordova app which uses the Media Class found here: http://docs.phonegap.com/en/2.9.0/cordova_media_media.md.html
It says that the Media class requires the following permissions:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
When I add these permissions to my app/AndroidManifest.xml file the audio and app works perfect. If I remove all the permissions the app still works perfect on my Android device. My question is has Phonegap changed the required permissions? Are any permissions required for a Phonegap app to work on all devices? Thanks.
which version of phonegap are you using? with phonegap 3.x the permissions are automatically added by the plugin.
Permission are not specific to phonegap but are relative to android. When you set permissions in androidmanifest.xml, when a user installs an app, he will be notified of the required permissions and if you do not require the permissions, there are some operations your app will not be able to perform.
You can use the media plugin without requiring the permissions, it will work fine as long as you do not try to perform operations that require permissions : you will be able to play audio but not to record.
Related
I installed a new application to release it to the play console. I installed Apk. First, I uploaded it to the open beta channel, but it always seems to be under review.
Later, after installing each apk, I get an e-mail about application permissions, they say that they do not comply with their privacy and sensitivity policies.
These appear in the permissions required by apk on the play console:
android.permission.ACCESS_NETWORK_STATE, android.permission.INTERNET, android.permission.READ_EXTERNAL_STORAGE, android.permission.WAKE_LOCK, android.permission.WRITE_EXTERNAL_STORAGE, com.google.android.c2dm.permission.RECEIVE
This is the content of mail:
Requested permissions do not match core functionality of the app
You declared Select Carrier Services and Device Automation as the core functionality of your app. However, after review, we found that your app does not match the declared use case(s). Learn more about permitted uses and exceptions.
Please either:
Make changes to your app so that it meets the requirements of the declared core functionality or,
Select a use case that matches your app’s functionality
Sensitive permission
Your app does not qualify for use of the requested permissions. Permission requests should make sense to users. You may only request permissions that are necessary to implement critical current features or services in your application. You may not use permissions that give access to user or device data for undisclosed, unimplemented, or disallowed features or purposes.
This is the my AndroidManifest.xml and permissions:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
If anyone has an idea or can help I would be very glad.
Although I changed it 8 times and installed the apk, I did not get approval for how many days and I constantly receive the mail I sent the content above, every time I send an apk..
I'm updating an app that doesn't need to use the camera or to record audio. I've removed the permissions from the manifest but the upload fails with
Your APK or Android App Bundle is using permissions that require a
privacy policy: (android.permission.CAMERA,
android.permission.RECORD_AUDIO).
I can see in generated manifests that the permissions get "injected".
This hasn't worked:
<uses-permission android:name="android.permission.CAMERA" tools:node="remove"/>
How do I stop that, or how do I tell the app that I will never, ever, ever want to use the camera?
I have an android app to analyse data of calls using android.permission.READ_CALL_LOG but I got no way to upload it how can I do this.
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
I don't think you can upload an app with those permission and SMS permissions to the store anymore due to an update to the playstore an applications privacy policy . However, there are a few modifications you can make to your code which might allow ou to be able to push the application. Please see the materials below as reference:
https://android-developers.googleblog.com/2019/01/reminder-smscall-log-policy-changes.html
https://proandroiddev.com/no-more-sms-call-log-permissions-now-what-9b8226de7827
https://support.google.com/googleplay/android-developer/answer/9047303
I have an Android app,but when user click "Install" button,the app install directly and it didn't prompt up to ask for permission for user to accept directly.So,I need to request permission during runtime.
But what I need to do,when user click "Install" button,request all the permission needed before the app start downloading from Google Play just like the image below:
So far my manifest is look like this
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
So what I need to add in order to achieve this?
You are welcome to have your targetSdkVersion below 23, which will force the request for permissions at install time.
Over time, seeing this permission dialog at install time will signal to prospective users that your app is obsolete and not being maintained. An increasing number of those prospective users will elect to not install your app as a result.
Also, bear in mind that users can still remove your requested permissions via the Settings app.
The runtime permissions was introduced since 5.0 Android.
The reason that most of users don't read permissions while installation.
So, all up-to-date API have to use runtime permissions.
Even default apps such as Google maps require runtime permissions.
https://developer.android.com/training/permissions/requesting.html
If you don't want to use runtime permissions you have to use old API version. but you have to check. Your app may crash.
For devices with android < 6.0 permissions are request at installation.
For devices with android > 6.0 permissions are request at runtime.
So if you want your app compatible with devices below and above 6.0, you need to declare permission in your Manifest.xml and request permission at runtime too.
The official guide
I've created a mobile game for iOS and Android that uses chartboost plugin to show advertisement and AdMob as well.
The thing is that I've created some permissions in the AndroidManifest in order to make this plugins work and one of this permissions is READ_PHONE_STATE which is asking for permission to read the call information to those who install the game. I don't like this because could generate distrust among users.
I've tried to delete the line that asks for this permission but when I do it the game crashes at the beginning, so, is there any way to remove this permission? Or do I have to keep it if I want to show advertisement?
I'm not sure about the chartboost plugin but I have created my own AdMob plugin and the only permissions that are required in the AndroidManifest file are:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
This is when using Google Play services rather than the AdMob SDK.