または:
私はアンドロイドでランタイム許可を検索し、私は、リンクの多くを見つけることが、私は複雑なコードは、今日のように、そこにある参照してください。
注:それは新しい開発者やFrasherのために有用ですので、私はここに私の単純なコードを共有しています。また、私はここに任意のサードパーティのライブラリを使用していませんでした。
または:
まず第一に、で書き込み許可Manifest
ファイル(私はいくつかのbagic許可を取ります):
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
今私は2つのメソッドを作るcheckPermission()
とrequestPermission()
も@Override
ひとつの方法名があるonRequestPermissionsResult()
、これは結果の世話をします。
今、私はそれがどのように見えるかを紹介します:
private boolean checkPermission() {
int internetPermission = ContextCompat.checkSelfPermission(getApplicationContext(), INTERNET);
int cameraPermission = ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA);
int readStoragePermission = ContextCompat.checkSelfPermission(getApplicationContext(), READ_EXTERNAL_STORAGE);
int writeStoragePermission = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE);
return internetPermission == PackageManager.PERMISSION_GRANTED &&
cameraPermission == PackageManager.PERMISSION_GRANTED &&
readStoragePermission == PackageManager.PERMISSION_GRANTED &&
writeStoragePermission == PackageManager.PERMISSION_GRANTED;
}
あなたはカメラが等...、INTERNETを定義している上記のコードで参照これは、クリックすることで、インポートでAlt+をEnterそして、それはコード以下を参照のような外観です。
import static android.Manifest.permission.CAMERA;
import static android.Manifest.permission.INTERNET;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
今のコード下記参照してくださいrequestPermission()
方法:
private void requestPermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{INTERNET, CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE}, 1);
}
今、最後の方法がありますonRequestPermissionsResult()
。この方法では、いずれかの権限が付与または拒否されて見ることができます。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0) {
boolean internet = grantResults[0] == PackageManager.PERMISSION_GRANTED;
boolean camera = grantResults[1] == PackageManager.PERMISSION_GRANTED;
boolean readStorage = grantResults[2] == PackageManager.PERMISSION_GRANTED;
boolean writeStorage = grantResults[3] == PackageManager.PERMISSION_GRANTED;
if (internet && camera && readStorage && writeStorage) {
init();
// Permission GRANTED (Here write your code what you want).
} else {
// Permission DENY (If user click on DENY then finish the activity);
finish();
}
}
}
}
グレートあなたにcheckPermission&requestPermissionで行われます。
注意:
この上記のコードは、のために働いていますActivity
。フラグメントでマイナーな変更があります。
私はフラグメントにこのコードを使用している場合、私は何を変更する必要があります。
あなただけに変更する
requestPermission()
方法:
private void requestPermission() {
requestPermissions(new String[]{INTERNET, CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE}, 1);
}