Android学習の6.0システムランタイム権限設定
今日、仕事の中で出会った6.0の実行時の権限処理の問題について話します.原因はバージョンの更新を設定することです.6.0システムでエラーが発生します.原因は6.0の動的権限設定です.googleでは安全のために、特定の権限についてお客様の権限を尋ねます.これはもちろん、お客様の資料の安全性を大幅に増加させます.もちろん、仕事の中で小さな変動をさせます.私が仕事でどのようにこれらの問題を解決したのかについてお話しします.
まずcopyを6.0にするとユーザーの権限が求められます
以上のcopyは鴻洋大神の紹介から、私はあまり言わないで、みんなは少し理解すればいいので、以下はバージョンの更新中の6.0権限を例にして、どのように動的に権限を追加するかを学びます
permission.WRITE_EXTERNAL_STORAGEは6.0権限で、バージョン更新でこの権限が使用されます
権限要求の処理
はい、動的に6.0権限を設定するのは簡単ですが、皆さんは知っていればいいです.主な問題は、どの権限が6.0で動的に取得する権限なのかを知ることです.
次に6.0権限使用ライブラリをお勧めします.結局、そんなに多くの権限があるので、私たちが1つずつ設定するのは面倒です.だから、事前に私たちが使う6.0動的取得権限を許可すれば、便利です.
PermissionGen
使用方法:
依存を追加:
権限を要求する2つの方法:
権限リクエストの結果
リクエスト成功
リクエストに失敗しました
これは非常に簡単な6.0権限処理ライブラリです.皆さん参考にしてください.
まずcopyを6.0にするとユーザーの権限が求められます
//
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
//
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
//
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
//
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
//
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
//
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
//
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
//
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
//SMS
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
以上のcopyは鴻洋大神の紹介から、私はあまり言わないで、みんなは少し理解すればいいので、以下はバージョンの更新中の6.0権限を例にして、どのように動的に権限を追加するかを学びます
permission.WRITE_EXTERNAL_STORAGEは6.0権限で、バージョン更新でこの権限が使用されます
private void uploadVersion() {
//
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// ,context, ,int
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1001);
} else {
//
GetVersionEngine engine = new GetVersionEngine(getRequestTag());
engine.sendRequest();
}
}
権限要求の処理
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1001) {//
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// ,
GetVersionEngine engine = new GetVersionEngine(getRequestTag());
engine.sendRequest();
} else
{
// ,
}
}
}
はい、動的に6.0権限を設定するのは簡単ですが、皆さんは知っていればいいです.主な問題は、どの権限が6.0で動的に取得する権限なのかを知ることです.
次に6.0権限使用ライブラリをお勧めします.結局、そんなに多くの権限があるので、私たちが1つずつ設定するのは面倒です.だから、事前に私たちが使う6.0動的取得権限を許可すれば、便利です.
PermissionGen
使用方法:
依存を追加:
compile 'com.lovedise:permissiongen:0.0.6'
権限を要求する2つの方法:
PermissionGen.with(MainActivity.this)
.addRequestCode(100)
.permissions(
Manifest.permission.READ_CONTACTS,
Manifest.permission.RECEIVE_SMS,
Manifest.permission.WRITE_CONTACTS)
.request();
PermissionGen.needPermission(ContactFragment.this, 100,
new String[] {
Manifest.permission.READ_CONTACTS,
Manifest.permission.RECEIVE_SMS,
Manifest.permission.WRITE_CONTACTS
}
);
権限リクエストの結果
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
リクエスト成功
@PermissionSuccess(requestCode = 100)
public void doSomething(){
Toast.makeText(this, "Contact permission is granted", Toast.LENGTH_SHORT).show();
}
リクエストに失敗しました
@PermissionFail(requestCode = 100)
public void doFailSomething(){
Toast.makeText(this, "Contact permission is not granted", t.LENGTH_SHORT).show();
}
これは非常に簡単な6.0権限処理ライブラリです.皆さん参考にしてください.