【问题标题】:onRequestPermissionsResult is compiling under fragmentonRequestPermissionsResult 正在片段下编译
【发布时间】:2018-10-18 05:53:22
【问题描述】:

我正在从 Fragment 请求我的应用程序的运行时权限。我可以调用 requestPermissions。

 requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_REQUEST_CODE);  

但是当我添加 onRequestPermissionsResult 时,它没有编译并说“方法不会覆盖其超类中的方法。

@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
}

谁能帮帮我。

【问题讨论】:

  • 你使用android.app.Fragment还是支持Fragments?你也可以添加你的build.gradle 文件吗?
  • 我有这个“编译'com.android.support:support-v4:21.0.3'”@Christopher
  • 我假设你也使用支持片段?!对于您的支持库,它太旧了。这是棒棒糖支持库。尝试更新到至少 23+ 或当前的 (28.+)。
  • 伟大的亚尔。谢谢@Christopher

标签: android android-fragments android-permissions android-6.0-marshmallow


【解决方案1】:

> 在 onCreateView 内

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        getActivity().requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 0);
    }

片段类内部

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

}

【讨论】:

  • 我只在片段中添加了
  • 仍然是同样的错误“方法不会覆盖其超类中的方法。”
【解决方案2】:

在 onCreateView() 方法中添加以下代码以请求权限

 ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_PHONE_STATE}, 1);

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG, "Permission: " + permissions[0] + "was " + grantResults[0]);
        }
    }

也在你的清单中添加:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2017-10-01
    • 2018-01-20
    • 2017-09-22
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多