2

Android 6.0でリクエストパーミッションを試したいのですが、困っています。

AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

build.gradle

compileSdkVersion 23
buildToolsVersion '23.0.2'

defaultConfig {
    applicationId "com.zhangkaiyue.jkdemo"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}

アクティビティ

    mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (Build.VERSION.SDK_INT >= 23) {
                int checkPermission = ContextCompat.checkSelfPermission(UsingCustomLayoutActivity.this, Manifest.permission_group.LOCATION);
                if (checkPermission != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(UsingCustomLayoutActivity.this, new String[]{Manifest.permission_group.LOCATION}, 111);
                }
            } else {
                Toast.makeText(UsingCustomLayoutActivity.this, "haha", Toast.LENGTH_SHORT).show();
            }
        }
    });

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == 111){
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(UsingCustomLayoutActivity.this, "hehe", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(UsingCustomLayoutActivity.this, "heihei", Toast.LENGTH_SHORT).show();
        }
    }
}

1 つの項目をクリックすると、許可ダイアログが表示されず、トースト テキストがheihei, 理由がわかりません。助けてください。

4

2 に答える 2

1

のように、パーミッション グループ全体のパーミッションをリクエストすることはできませんManifest.permission_group.LOCATION

特定の許可を要求する必要がありますManifest.permission.ACCESS_FINE_LOCATION

int checkPermission = ContextCompat.checkSelfPermission(UsingCustomLayoutActivity.this, 
        Manifest.permission.ACCESS_FINE_LOCATION);

if (checkPermission != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(UsingCustomLayoutActivity.this, 
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 111);
}

ACCESS_COARSE_LOCATIONまた、すでに を持っている場合はパーミッションが暗黙的に付与されるACCESS_FINE_LOCATIONため、省略してもかまいません。

于 2016-05-05T13:38:22.287 に答える