Does anyone know how to handle dangerous permissions such as permission for camera,storage etc. Below Android Version Marshmallow.
I know how to request permission above Android marshmallow but how handle it for the version below it?
Any Solution?
You don't need extra codes to handle permission below marshmallow. Permission set on manifest works just fine.
Related
Android devs.
I have a critical issue to grant the permissions.
I am developing an app to use so many permissions, but my customer doesn't like the permission dialogs for each permission. So I decrease the target SDK version to 22 to avoid the disturbing permission dialog. But I noticed a critical issue with ANSWER_PHONE_CALLS permission. I have googled and got that when the SDK version is lower than 23, there is no need to consider the permission on runtime, but just add the permission in the AndroidManifest file. But actually, when I get the return value of checkSelfPermission for ANDROID_PHONE_CALLS permission, it returns -1(denied). And some features using this permission are all failed with not permitted. Is there anyone who has experienced this, and let me know how to control this issue? Thanks! (I really hope to find the solution.) :(
Can't use android.permission.WRITE_SETTINGS in android manifest. im trying to turn on airplane mode by programatticaly and I can't add this permission in manifest.
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
The Android docs says:
Note: If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen. The app requests the user's approval by sending an intent with action ACTION_MANAGE_WRITE_SETTINGS. The app can check whether it has this authorization by calling Settings.System.canWrite().
So you have to request the user's approval explicitly by sending an intent with action ACTION_MANAGE_WRITE_SETTINGS.
What is the error message that you are getting? Is the app crashing when you try to open it or set the airplane settings? If you are targetting >API 23, you need to explicitly ask for permissions during runtime, this is a change from earlier versions when the permission was granted once at install time.
This link talks abou this:
https://developer.android.com/reference/android/Manifest.permission.html#WRITE_SETTINGS
It seems like MIUI implemented own permission model before Android 6.
The problem is that for my app it is needed to request all permissions at start of Main Activity.
In Android 6 it's easy for me.
Is there a way to do the same for MIUI?
ActivityCompat.checkSelfPermission returns that every permissions is granted.
From app I gave the required permission for my app. While my app is running, I went to system settings page and revoked the permission. The app is crashing. Will we be able to handle this?.
Android 6.0 (Marshmallow, API 23) switched from an install-time permission model to a runtime permission model. Now instead of the user granting all permissions at runtime, you the developer are responsible for requesting permissions at runtime and responding appropriately.
You should begin by reading the Requesting Permissions at Run Time documentation. So that you can properly request permissions on devices running Marshmallow.
To prevent your app from crashing, you need to call ContextCompat.checkSelfPermission() to see if you have a permission before attempting to call a method that requires a permission. However, this is only half the equation since you still need to request the permission if you don't already have it.
I'm applying Android 6.0 runtime permissions into an app which listens to carrier data connection state changes. I first tried to just remove the READ_PHONE_STATE from the manifest to check where the app requires the permission. To my surprise the app didn't crash at all.
After this I've tried the same installation on two pre 6.0 devices which did actually crash on it. To me it seems like Android 6.0 does no longer require the permission. Is there any way to confirm this?
The line below is the one on which the pre 6.0 devices crashes:
tm(TelephonyManager).listen(this, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
Is there any way to confirm this?
Yes, this commit removes the request of READ_PHONE_STATE when register the event type LISTEN_CALL_STATE, LISTEN_DATA_ACTIVITY and LISTEN_DATA_CONNECTION_STATE:
Do not enforce PHONE_STATE_PERMISSION to register listener PHONE_STATE_PERMISSION should not be required to register to the following event types:
- PhoneStateListener.LISTEN_CALL_STATE
- PhoneStateListener.LISTEN_DATA_ACTIVITY
- PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
In case of LISTEN_CALL_STATE, an empty string should be passed instead of incomingNumber, when caller has no PHONE_STATE_PERMISSION.
Bug: 21588537 Change-Id: I5b6d0308924f7e4cd13a983b8e0c9b3a5bbb119b
The documentation on developer.android.com was updated and correctly shows that the permission are not required.
If your code doesn't need the permission READ_PHONE_STATE for other reason apart from LISTEN_DATA_CONNECTION_STATE you can change your AndroidManifest.xml adding maxSdkVersion to the uses-permission:
<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22" />
There is no special permission listed for PhoneStateListener.LISTEN_DATA_CONNECTION_STATE in the official android documentation.
http://developer.android.com/reference/android/telephony/PhoneStateListener.html#LISTEN_DATA_CONNECTION_STATE