2016-11-08 56 views
1

我已閱讀有關Android權限的其他問題。但我仍然沒有得到解決方案的片段。爲什麼沒有出現權限對話框?另外,它不顯示任何錯誤日誌。它只是沒有出現。片段上的權限

我不想使用FragmentCompat因爲它的要求進口android.app.Fragment

這是我的最低版本的SDK。 的minSdkVersion 16

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

您是否在您的'AndroidManiFest.xml'文件中聲明瞭此權限'Manifest.permission.CAMERA'? – grantonzhuang

+0

是的,我確實聲明瞭權限 – Nizzam

+0

int變量'PERMISSIONS_CAMERA'必須小於255並且大於0,請檢查它。 – grantonzhuang

回答

0

也許ü可以嘗試 <uses-permission android:name="android.permission.CAMERA" />複製到您的maniferst

+0

我已經做到了這一點,仍然面臨同樣的問題 – Nizzam

0

試試這個,

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()方法中請求權限的結果。

@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

在你的build.gradle(應用級)把這個代碼(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

調試您的代碼,看看是否檢查條件。許可授予? –