2016-11-08 8 views
1

アンドロイドの許可に関するその他のご質問を確認しました。しかし、私はまだ断片の解決策を得られませんでした。なぜ許可のダイアログが表示されないのですか?また、エラーログを表示しません。それは表示されません。私はそのは輸入を必要とするので、FragmentCompatを使用したくないフラグメントに対する許可

は、これは私の最小のSDK版である

をandroid.app.Fragment。 minSdkVersionが

import android.support.v4.app.Fragment; 


public class ComplaintFragment extends Fragment implements View.OnClickListener { 

    private void StartCamera(){ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     requestPermissions(new String[]{Manifest.permission.CAMERA}, PERMISSIONS_CAMERA); 
    } 
    else {OpenCamera();} 
    } 


    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if(ActivityCompat.checkSelfPermission(getActivity(), permissions[0]) == PackageManager.PERMISSION_GRANTED) { 

     switch (requestCode) { 
      case PERMISSIONS_CAMERA: 
       OpenCamera(); 
       break; 
     } 
    } 
    } 

} 
+1

'Manifest.permission.CAMERA'を' AndroidManiFest.xml'ファイルに宣言しましたか? – grantonzhuang

+0

はい、私はその許可を宣言しています – Nizzam

+0

int変数 'PERMISSIONS_CAMERA'は255より小さく、0より大きくなければなりません。これをチェックしてください。 – grantonzhuang

答えて

0

16は多分uが、これを試してみてくださいあなたのmaniferst

+0

私はこれをやっていますが、同じ問題に直面しています – Nizzam

0

<uses-permission android:name="android.permission.CAMERA" />をコピーしてみてください

1)マニフェストにカメラの権限を与えることができます。

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

2)許可が許可されているかどうかを確認します。

if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
     requestPermissions(new String[]{android.Manifest.permission.CAMERA},1); 
           return; 
          } else { 
           oprnCamere(); 
          } 

3)あなたのフラグメントのクラスでonActivityResult()メソッドで要求許可から結果をヘンデル。あなたのbuild.gradleで

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case 0: { 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        //permission accepted. 
        openCamera() 
       } else { 
        //permission denied. 
       } 
       return; 
      } 
     } 
    } 
+0

構文が間違っています。 –

+0

どちら? @AlNoman –

+0

@AlNomanありがとう。 –

0

(アプリケーションレベル)は、このコードを配置(targetSdkVersion 23)

defaultConfig { 
    applicationId "com.example.sampleproject" 
    minSdkVersion 9 
    targetSdkVersion 23 
    } 
+0

動作しているかどうかを一度試してみてください –

+0

まだ動作していません – Nizzam

0

私はonRequestPermissionsResultにあなたの関数を書き換えます。試してみてください:

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

     switch (requestCode) { 
      case PERMISSIONS_CAMERA: 
       if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) 
        //Camera permission grant 
        OpenCamera(); 
       else 
        Log.e("error","Oop something wrong with permission"); 
      break; 
    } 

this linkもチェックしてください。あなたの質問に答えるのに役立つかもしれません。

+0

条件がチェックであるかどうかを確認するには、コードをデバッグしてください。許可は付与されますか? –

関連する問題