안녕하세요.
안드로이드 마쉬멜로우 부터 스마트폰 권한을 사용자에게 직접허가를 받아야한다해서 , 프로그램을 수정중인데요.
지금하고있는건 , 사용자의 핸드폰 번호를 알기위해서 READ_PHONE_STATE 를 허가해주고있습니다.
https://developer.android.com/training/permissions/requesting.html?hl=ko#perm-check
프로그램은 마무리가 되었는데요,
// Here, thisActivity is the current activity
//권한 보유여부 확인
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_PHONE_STATE)) {
//sdk 23버전이상
//Toast.makeText(mContext,"23버전이상",Toast.LENGTH_SHORT).show();
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
//PhoneNumber = getPhoneNumber(mContext,"-");
Toast.makeText(mContext,"권한요청을 사용자가 거절",Toast.LENGTH_SHORT).show();
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
Toast.makeText(mContext,"첫실행 -> 권한요청",Toast.LENGTH_SHORT).show();
}
}else {
PhoneNumber = getPhoneNumber(mContext,"-");
Toast.makeText(mContext,"권한있음==="+PhoneNumber,Toast.LENGTH_SHORT).show();
}
Log.d("PhoneNumber",PhoneNumber);
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_PHONE_STATE: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//PhoneNumber = getPhoneNumber(mContext,"-");
//Toast.makeText(mContext,"승인받음===",Toast.LENGTH_SHORT).show();
Log.d("rrrrrrr=====","승인");
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Log.d("rrrrrrr=====","거절");
//Toast.makeText(mContext,"거절 ㅜ===",Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
권한 요청 창이 뜨고 사용자가 확인 을 누르면
화변 오베레이 감지됨
설정 > 앱에서 화면 오버레이를 사용하지 않도록 설정해야 합니다.
라고 안드로이드가 띄워줍니다.
그래서 네이버에 검색해서 백그라운드에서 실행중인건 싹다 중지를 시켯는데도, 계속 나옵니다...
http://kairosre.tistory.com/670
http://blog.ptware.net/220880485663
그리고 현재 안드로이드 6.0 버전인 폰이 2개가 있습니다.
-갤럭시노트4
-갤럭시A7
둘다 앱 설정 초기화를 하고 실행을 하면 a7은 오버레이설정하라고 계속뜨고 , 노트4는 바로 설정이 됩니다..
A7이 저가형 폰이기 합니다만... 이런게 막히게 만들었을까요..?? ㅜㅠ