片段中的 requestPermissions
requestPermissions in a fragment
我添加了 setHasOptionsMenu(true);在创建视图中。我想调用 onRequestPermissionsResult 但 onOptionsItemSelected 有问题。
这是一个片段,如果我使用 v4.fragment,它会产生不同的问题。
我将使用 import android.app.Fragment;但是 requestPermissions 想要 --Call 需要 API 级别 23(当前最小值是 16):-- 我尝试了一些解决方案。我想只有这样才能解决 api 级别的问题。我该如何解决?
@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);
.
.
.
当时在 Fragment 中使用运行时权限时使用的是 requestPermission() 而不是 AppCompact.requestpermission()。
请检查下面link:
希望这对您有所帮助,如果您做到了,请点赞并关闭此问题。
我只添加了 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);
}
我添加了 setHasOptionsMenu(true);在创建视图中。我想调用 onRequestPermissionsResult 但 onOptionsItemSelected 有问题。 这是一个片段,如果我使用 v4.fragment,它会产生不同的问题。 我将使用 import android.app.Fragment;但是 requestPermissions 想要 --Call 需要 API 级别 23(当前最小值是 16):-- 我尝试了一些解决方案。我想只有这样才能解决 api 级别的问题。我该如何解决?
@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);
.
.
.
当时在 Fragment 中使用运行时权限时使用的是 requestPermission() 而不是 AppCompact.requestpermission()。
请检查下面link:
希望这对您有所帮助,如果您做到了,请点赞并关闭此问题。
我只添加了 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);
}