Android6.0 런타임 권한
3550 단어 필기
context.checkPermission(permission, Process.myPid(), Process.myUid())
activity.requestPermissions(permissions, requestCode);
fragment.requestPermissions(permissions, requestCode);
// , ( ) , true;
// , false;
activity.shouldShowRequestPermissionRationale(permission);
fragment.shouldShowRequestPermissionRationale(perm);
타사 프레임워크를 사용한 런타임 사용 권한(EasyPermissions)
GitHub 소스 주소
사용법(문자 총 읽기 예)
public class MainActivity extends AppCompatActivity
implements EasyPermissions.PermissionCallbacks // EasyPermissions
{
//
public static final int CODE_READ_SMS = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onclick(View view) {
readSmsCount();
}
/**
*
* ( : )
*/
@AfterPermissionGranted(CODE_READ_SMS)
public void readSmsCount() {
String[] perms = new String[] {
Manifest.permission.READ_SMS,
Manifest.permission.READ_EXTERNAL_STORAGE
};
//
// this: Activity,Activity EasyPermissions.PermissionCallbacks
if (EasyPermissions.hasPermissions(this, perms)) {
// ,
// AsyncQueryHandler
int count = -1;
Cursor cursor = getContentResolver().query(Uri.parse("content://sms"),
null, null, null, null);
if (cursor != null) {
count = cursor.getCount();
cursor.close();
}
Toast.makeText(this, " :" + count, Toast.LENGTH_SHORT).show();
} else {
// ,
// 1: Activity
// 2:
// 3:
// 4:
EasyPermissions.requestPermissions(this,
" ...",
CODE_READ_SMS, perms);
}
}
//
@Override
public void onPermissionsGranted(int requestCode, List perms) {
System.out.println("----------------- ");
}
//
@Override
public void onPermissionsDenied(int requestCode, List perms) {
System.out.println("----------------- ");
}
//
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
System.out.println("-----------------onRequestPermissionsResult");
}
}
부록:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
static 간단한 설명static 방법은 일반적으로 정적 방법이라고 부른다. 정적 방법은 어떠한 대상에 의존하지 않고 접근할 수 있기 때문에 정적 방법에 있어this는 없다. 왜냐하면 그 어떠한 대상에도 의존하지 않기 때문이다. 대상이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.