0

setHasOptionsMenu (true)를 추가했습니다. inCreateView에서. onRequestPermissionsResult를 호출하려고하지만 onOptionsItemSelected에 문제가 있습니다. 이것은 조각에 있고 v4.fragment를 사용하면 다른 문제가 발생합니다. import android.app.Fragment;를 사용합니다. requestPermissions want - 호출에는 API 수준 23 (현재 최소값은 16)이 필요합니다. - 몇 가지 해결책을 시도했습니다. 나는 API 수준의 문제를 해결할 수있는 유일한 방법이라고 생각합니다. 어떻게 해결할 수 있습니까?fragment에있는 requestPermissions

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
{ 
    menu.add("").setIcon(android.R.drawable.ic_menu_call).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) 
    { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_CONTACTS)) 
     { 
     } 
     else 
     { 
      ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
      MenuFragment.this.requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
      requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
     } 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
{ 
    Toast.makeText(getActivity(), "Here", Toast.LENGTH_LONG).show(); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    //AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    . 
    . 
    . 

답변

0

나는 targetapi 만 추가했는데 효과가있었습니다. 또한이 프래그먼트에서 requestPermissions를 사용했습니다.

@TargetApi(Build.VERSION_CODES.M) 
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) 
    { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_CONTACTS)) 
     { 
     } 
     else 
     { 
      //ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
      //MenuFragment.requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
      requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
     } 
    } 
    return super.onOptionsItemSelected(item); 
} 
0

그 당시 조각 (Fragment)의 런타임 사용 권한을 사용하면 requestPermission()을 AppCompact.requestpermission()이 아니라 사용했습니다.

How to check permission in fragment

희망이 도움을 당신이하는 경우에이 그것을 upvote에이 질문을 폐쇄하십시오

아래 링크를 확인하시기 바랍니다.

관련 문제