android:動的申請権限(一)

5103 ワード

環境:
Androidバージョン6.0
SDKバージョン23に対応
動的申請権限の説明:すべての動的申請の権限は、AndroidManifestにある必要があります.xmlで宣言
ステップ
1、androidプロジェクトを新規作成する
デフォルトで作成
2、AndroidManifest.xml権限の追加
ここはandroidです.permission.READ_CONTATSの例:

 
3、MainActivity
package com.xxx.xxx;

import android.Manifest;
import android.app.Activity; import android.content.pm.PackageManager; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity { private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //         if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) { //                  Toast.makeText(this, "Apply Reason:    。。。", Toast.LENGTH_LONG).show(); } //     ,                 ,                 requestPermissions(new String[] { Manifest.permission.READ_CONTACTS }, MY_PERMISSIONS_REQUEST_READ_CONTACTS); return; } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //      Toast.makeText(this, "Apply Perssion Successfully", Toast.LENGTH_SHORT).show(); } else { //      Toast.makeText(this, "Apply Perssion Failed", Toast.LENGTH_SHORT).show(); //                    // 1、       ,          // 2、    ,          ,        ,          } return; } } } }

説明:sdkバージョンが23未満の場合、権限の使用方法はこれとは異なります(android-support-v 4.jarをインポートする必要があります).
ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

ダウンロード先:http://www.pc0359.cn/downinfo/62688.html
supportlibraryeresupportv 7appcompatlibsの下のlibパッケージをプロジェクトに参照します.