ちょっと私はAndroid studioでアプリを設計しています。私はカメラの許可が必要です。 AndroidManifest.xmlファイルに<uses-permission Android:name="Android.permission.CAMERA" />
を含めました。 Marshmallowを除くAndroidのすべてのバージョンで正常に動作しています。デフォルトでカメラの許可を取得するにはどうすればよいですか?不可能な場合、どのようにユーザーに尋ねますか?
最初に、ユーザーがアクセス許可を付与したかどうかを確認します。
if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED)
次に、これを使用してユーザーに要求できます。
ActivityCompat.requestPermissions(activity, new String[] {Manifest.permission.CAMERA}, requestCode);
マシュマロでは、ダイアログに表示されます
次のコードを試して、マシュマロでカメラの許可をリクエストできます。最初に、ユーザーが許可を付与しているかどうかを確認します。ユーザーが許可を付与していない場合は、カメラの許可を要求します。
private static final int MY_CAMERA_REQUEST_CODE = 100;
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_REQUEST_CODE);
}
許可を要求すると、ダイアログが表示され、allow
およびdeny
オプションを含む許可を要求します。アクションをクリックすると、次の方法でリクエストの結果を取得できます。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
RxPermission は、コードを1行にした最適なライブラリです。
カメラの許可の場合、回避策は次のようになります。
1)まず、manifest.xml
にこの許可を追加します。
<uses-permission Android:name="Android.permission.CAMERA" />
2)次に、実行時許可を求めます。
new RxPermissions(this)
.request(Manifest.permission.CAMERA) // ask single or multiple permission once
.subscribe(granted -> {
if (granted) {
// All requested permissions are granted
} else {
// At least one permission is denied
}
});
このライブラリをbuild.gradle
に追加します
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}
これは簡単ではないですか?
check using this
if (ContextCompat.checkSelfPermission(this, Android.Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED)
そして
これは私にとってはうまくいきます、ソースは here です
int MY_PERMISSIONS_REQUEST_CAMERA=0;
// Here, this is the current activity
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA))
{
}
else
{
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA );
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}