About Android Permissions
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I made an Android App, which have some permissions, everything is ok but problem is that when user don't click on Allow or Deny(on Permission Dialog at first time app launch) button with in few seconds(approx 3 to 5 seconds) then my app not functioning properly it's register page, login and some other functions not working, if user click within few seconds then its work properly without any issue, i also check this from Internet but nobody clear my issue please help. FCM token not generating from Firebase.
Error is:-
E/FirebaseInstanceId: Unable to get master token
java.lang.SecurityException: getDeviceId: Neither user 10493 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:2004)
at android.os.Parcel.readException(Parcel.java:1950)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:5030)
at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:1013)
at com.Abc.AppName.FirebaseInstanceIDService.id(FirebaseInstanceIDService.java:63)
at com.Abc.AppName.FirebaseInstanceIDService.onTokenRefresh(FirebaseInstanceIDService.java:35)
at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source:187)
at com.google.firebase.iid.FirebaseInstanceIdService.handleIntent(Unknown Source:306)
at com.google.firebase.iid.zzc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Manifest:-
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
Splash:-
if (Build.VERSION.SDK_INT >= 23) {
String PERMISSIONS = {android.Manifest.permission.INTERNET,
android.Manifest.permission.ACCESS_NETWORK_STATE,
android.Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE
};
if (!hasPermissions(mContext, PERMISSIONS)) {
ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST);
} else {
callNextActivity();
}
} else {
callNextActivity();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions, @NonNull int grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
callNextActivity();
} else {
Toast.makeText(mContext, R.string.permission_denied, Toast.LENGTH_LONG).show();
}
}
}
}
private static boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
FirebaseInstanceID:-
@Override
public void onTokenRefresh() {
token = FirebaseInstanceId.getInstance().getToken();
device_id = id(this);
sharedPreferences = getSharedPreferences(getString(R.string.prefs), 0);
sharedPreferences.edit().putString("fcm_token", token).apply();
device_id = sharedPreferences.getString(PREF_UNIQUE_ID, "");
Log.e("fcm_token", token + " " + device_id);
executeMethod();
}
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(context.getString(R.string.prefs), Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
mngr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
}
uniqueID = mngr.getDeviceId();
Log.e("UNIQUEID", uniqueID);
sharedPrefs.edit().putString(PREF_UNIQUE_ID, uniqueID).apply();
}
}
return uniqueID;
}
java android android-permissions
add a comment |
I made an Android App, which have some permissions, everything is ok but problem is that when user don't click on Allow or Deny(on Permission Dialog at first time app launch) button with in few seconds(approx 3 to 5 seconds) then my app not functioning properly it's register page, login and some other functions not working, if user click within few seconds then its work properly without any issue, i also check this from Internet but nobody clear my issue please help. FCM token not generating from Firebase.
Error is:-
E/FirebaseInstanceId: Unable to get master token
java.lang.SecurityException: getDeviceId: Neither user 10493 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:2004)
at android.os.Parcel.readException(Parcel.java:1950)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:5030)
at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:1013)
at com.Abc.AppName.FirebaseInstanceIDService.id(FirebaseInstanceIDService.java:63)
at com.Abc.AppName.FirebaseInstanceIDService.onTokenRefresh(FirebaseInstanceIDService.java:35)
at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source:187)
at com.google.firebase.iid.FirebaseInstanceIdService.handleIntent(Unknown Source:306)
at com.google.firebase.iid.zzc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Manifest:-
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
Splash:-
if (Build.VERSION.SDK_INT >= 23) {
String PERMISSIONS = {android.Manifest.permission.INTERNET,
android.Manifest.permission.ACCESS_NETWORK_STATE,
android.Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE
};
if (!hasPermissions(mContext, PERMISSIONS)) {
ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST);
} else {
callNextActivity();
}
} else {
callNextActivity();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions, @NonNull int grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
callNextActivity();
} else {
Toast.makeText(mContext, R.string.permission_denied, Toast.LENGTH_LONG).show();
}
}
}
}
private static boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
FirebaseInstanceID:-
@Override
public void onTokenRefresh() {
token = FirebaseInstanceId.getInstance().getToken();
device_id = id(this);
sharedPreferences = getSharedPreferences(getString(R.string.prefs), 0);
sharedPreferences.edit().putString("fcm_token", token).apply();
device_id = sharedPreferences.getString(PREF_UNIQUE_ID, "");
Log.e("fcm_token", token + " " + device_id);
executeMethod();
}
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(context.getString(R.string.prefs), Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
mngr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
}
uniqueID = mngr.getDeviceId();
Log.e("UNIQUEID", uniqueID);
sharedPrefs.edit().putString(PREF_UNIQUE_ID, uniqueID).apply();
}
}
return uniqueID;
}
java android android-permissions
add a comment |
I made an Android App, which have some permissions, everything is ok but problem is that when user don't click on Allow or Deny(on Permission Dialog at first time app launch) button with in few seconds(approx 3 to 5 seconds) then my app not functioning properly it's register page, login and some other functions not working, if user click within few seconds then its work properly without any issue, i also check this from Internet but nobody clear my issue please help. FCM token not generating from Firebase.
Error is:-
E/FirebaseInstanceId: Unable to get master token
java.lang.SecurityException: getDeviceId: Neither user 10493 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:2004)
at android.os.Parcel.readException(Parcel.java:1950)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:5030)
at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:1013)
at com.Abc.AppName.FirebaseInstanceIDService.id(FirebaseInstanceIDService.java:63)
at com.Abc.AppName.FirebaseInstanceIDService.onTokenRefresh(FirebaseInstanceIDService.java:35)
at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source:187)
at com.google.firebase.iid.FirebaseInstanceIdService.handleIntent(Unknown Source:306)
at com.google.firebase.iid.zzc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Manifest:-
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
Splash:-
if (Build.VERSION.SDK_INT >= 23) {
String PERMISSIONS = {android.Manifest.permission.INTERNET,
android.Manifest.permission.ACCESS_NETWORK_STATE,
android.Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE
};
if (!hasPermissions(mContext, PERMISSIONS)) {
ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST);
} else {
callNextActivity();
}
} else {
callNextActivity();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions, @NonNull int grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
callNextActivity();
} else {
Toast.makeText(mContext, R.string.permission_denied, Toast.LENGTH_LONG).show();
}
}
}
}
private static boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
FirebaseInstanceID:-
@Override
public void onTokenRefresh() {
token = FirebaseInstanceId.getInstance().getToken();
device_id = id(this);
sharedPreferences = getSharedPreferences(getString(R.string.prefs), 0);
sharedPreferences.edit().putString("fcm_token", token).apply();
device_id = sharedPreferences.getString(PREF_UNIQUE_ID, "");
Log.e("fcm_token", token + " " + device_id);
executeMethod();
}
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(context.getString(R.string.prefs), Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
mngr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
}
uniqueID = mngr.getDeviceId();
Log.e("UNIQUEID", uniqueID);
sharedPrefs.edit().putString(PREF_UNIQUE_ID, uniqueID).apply();
}
}
return uniqueID;
}
java android android-permissions
I made an Android App, which have some permissions, everything is ok but problem is that when user don't click on Allow or Deny(on Permission Dialog at first time app launch) button with in few seconds(approx 3 to 5 seconds) then my app not functioning properly it's register page, login and some other functions not working, if user click within few seconds then its work properly without any issue, i also check this from Internet but nobody clear my issue please help. FCM token not generating from Firebase.
Error is:-
E/FirebaseInstanceId: Unable to get master token
java.lang.SecurityException: getDeviceId: Neither user 10493 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:2004)
at android.os.Parcel.readException(Parcel.java:1950)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:5030)
at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:1013)
at com.Abc.AppName.FirebaseInstanceIDService.id(FirebaseInstanceIDService.java:63)
at com.Abc.AppName.FirebaseInstanceIDService.onTokenRefresh(FirebaseInstanceIDService.java:35)
at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source:187)
at com.google.firebase.iid.FirebaseInstanceIdService.handleIntent(Unknown Source:306)
at com.google.firebase.iid.zzc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Manifest:-
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
Splash:-
if (Build.VERSION.SDK_INT >= 23) {
String PERMISSIONS = {android.Manifest.permission.INTERNET,
android.Manifest.permission.ACCESS_NETWORK_STATE,
android.Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE
};
if (!hasPermissions(mContext, PERMISSIONS)) {
ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST);
} else {
callNextActivity();
}
} else {
callNextActivity();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions, @NonNull int grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
callNextActivity();
} else {
Toast.makeText(mContext, R.string.permission_denied, Toast.LENGTH_LONG).show();
}
}
}
}
private static boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
FirebaseInstanceID:-
@Override
public void onTokenRefresh() {
token = FirebaseInstanceId.getInstance().getToken();
device_id = id(this);
sharedPreferences = getSharedPreferences(getString(R.string.prefs), 0);
sharedPreferences.edit().putString("fcm_token", token).apply();
device_id = sharedPreferences.getString(PREF_UNIQUE_ID, "");
Log.e("fcm_token", token + " " + device_id);
executeMethod();
}
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(context.getString(R.string.prefs), Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
mngr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
}
uniqueID = mngr.getDeviceId();
Log.e("UNIQUEID", uniqueID);
sharedPrefs.edit().putString(PREF_UNIQUE_ID, uniqueID).apply();
}
}
return uniqueID;
}
java android android-permissions
java android android-permissions
edited Jan 4 at 5:12
EKN
1,357826
1,357826
asked Jan 4 at 5:04
Office KOffice K
11
11
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You can use another activity to request permissions. If user allows, just start your main activity, else kill request activity or show popup to warn user.
add a comment |
The problem is you are trying to get id of the device in onTokenRefresh
. This method will be called as soon as the app gets installed and opened first time . By this time your app wont have the permission .
So solution to this problem .
In onTokenRefresh
just save the token in shared preferences and when you reach the activity ,request for permission and after permission is granted get the token from shared preferences and device id and do your stuff .
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54033348%2fabout-android-permissions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use another activity to request permissions. If user allows, just start your main activity, else kill request activity or show popup to warn user.
add a comment |
You can use another activity to request permissions. If user allows, just start your main activity, else kill request activity or show popup to warn user.
add a comment |
You can use another activity to request permissions. If user allows, just start your main activity, else kill request activity or show popup to warn user.
You can use another activity to request permissions. If user allows, just start your main activity, else kill request activity or show popup to warn user.
answered Jan 4 at 5:29
C. SoyluC. Soylu
343
343
add a comment |
add a comment |
The problem is you are trying to get id of the device in onTokenRefresh
. This method will be called as soon as the app gets installed and opened first time . By this time your app wont have the permission .
So solution to this problem .
In onTokenRefresh
just save the token in shared preferences and when you reach the activity ,request for permission and after permission is granted get the token from shared preferences and device id and do your stuff .
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
add a comment |
The problem is you are trying to get id of the device in onTokenRefresh
. This method will be called as soon as the app gets installed and opened first time . By this time your app wont have the permission .
So solution to this problem .
In onTokenRefresh
just save the token in shared preferences and when you reach the activity ,request for permission and after permission is granted get the token from shared preferences and device id and do your stuff .
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
add a comment |
The problem is you are trying to get id of the device in onTokenRefresh
. This method will be called as soon as the app gets installed and opened first time . By this time your app wont have the permission .
So solution to this problem .
In onTokenRefresh
just save the token in shared preferences and when you reach the activity ,request for permission and after permission is granted get the token from shared preferences and device id and do your stuff .
The problem is you are trying to get id of the device in onTokenRefresh
. This method will be called as soon as the app gets installed and opened first time . By this time your app wont have the permission .
So solution to this problem .
In onTokenRefresh
just save the token in shared preferences and when you reach the activity ,request for permission and after permission is granted get the token from shared preferences and device id and do your stuff .
edited Jan 4 at 6:04
answered Jan 4 at 5:16
Manohar ReddyManohar Reddy
7,12244066
7,12244066
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
add a comment |
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
This error only showing in Android Oreo, Nougat or other below is working fine.
– Office K
Jan 4 at 6:55
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
because runtime permission is needed only on android version 6.0+
– Manohar Reddy
Jan 4 at 7:11
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54033348%2fabout-android-permissions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown