2017-02-08 9 views
1

私はアプリケーションを起動したいときにアクセス権を取得しようとしていますが、ナビゲーション用の引き出しで構成されていますが、初めてアプリケーションを開くときにマニフェストのパーミッションを要求しても表示されません。クラス後カメラの許可があるナビゲーション用ドロワー

コード MainActivity.java は、ナビゲーション引き出しの実装で構成され、私はのonCreateでcheckSelfPermissionをお願いしていたが、何も働きません。

public class MainActivity extends AppCompatActivity { 

private DrawerLayout mDrawer; 
private Toolbar toolbar; 
private NavigationView nvDrawer; 
private ActionBarDrawerToggle drawerToggle; 

private static final int REQUEST_CAMERA = 0; 

private View mLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA) == 
      PackageManager.PERMISSION_GRANTED) { 

     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.CAMERA)) { 
      // Show an explanation to the user *asynchronously* -- don't block 
      // this thread waiting for the user's response! After the user 
      // sees the explanation, try again to request the permission. 

     } else { 
      ActivityCompat.requestPermissions(MainActivity.this, 
        new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA); 
     } 
    } 

    nvDrawer = (NavigationView) findViewById(R.id.nvView); 
    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    setupDrawerContent(nvDrawer); 
    drawerToggle = setupDrawerToggle(); 
    mDrawer.addDrawerListener(drawerToggle); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    if (requestCode == REQUEST_CAMERA){ 
     if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
      //granted 
     }else { 
      ActivityCompat.requestPermissions(MainActivity.this, 
        new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA); 
     } 
    } 
} 

private ActionBarDrawerToggle setupDrawerToggle() { 
    return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close); 
} 

private void setupDrawerContent(NavigationView navigationView) { 
    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        selectDrawerItem(menuItem); 
        return true; 
       } 
      }); 
} 

private void selectDrawerItem(MenuItem menuItem) { 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    drawerToggle.syncState(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    drawerToggle.onConfigurationChanged(newConfig); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (drawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

答えて

1

あなたのミスが==あり、それは以下のようにする必要があります。

if (ContextCompat.checkSelfPermission(this, 
    Manifest.permission.CAMERA) != 
    PackageManager.PERMISSION_GRANTED) 
関連する問題