0

setHasOptionsMenu(true)を追加しました。 onCreateViewでonRequestPermissionsResultを呼び出すが、onOptionsItemSelectedに問題がある。 これは断片的なものです.v4.fragmentを使用すると、さまざまな問題が発生します。 私はimport android.app.Fragmentを使用します。 requestPermissions want - コールにはAPIレベル23が必要です(現在の最小値は16です)。 - 私はいくつかの解決策を試しました。私はAPIレベルの問題を解決する唯一の方法だと思います。どうすれば解決できますか?フラグメント内の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でRuntimeパーミッションを使用した場合、RequestPermission()はAppCompact.requestpermission()ではなく使用されました。

リンクの下に確認してください。

How to check permission in fragment

は、このヘルプを願って、あなたがこれを実行した場合、それをupvoteと、この質問を閉じてください。

関連する問題