【问题标题】:Android Permission Request: onRequestPermissionsResult is never called / reached - Possible Context IssueAndroid 权限请求:onRequestPermissionsResult 从未被调用/到达 - 可能的上下文问题
【发布时间】:2016-05-08 13:46:40
【问题描述】:

请求权限:

public class GooglePermissions extends ExternalClass
{
    //...
    private void checkPermissions()
    {
        if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED)
        {
            ActivityCompat.requestPermissions( (Activity) mContext, new String[]{Manifest.permission.GET_ACCOUNTS}, REQUEST_GET_ACCOUNTS);
        }
    }
    //...
}

权限请求结果:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
{
    switch (requestCode)
    {
        case REQUEST_GET_ACCOUNTS:
        {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                Log.d(TAG, "Permissions Granted");
            }
            else
            {
                Log.d(TAG, "Permissions Denied");
            }
            return;
        }
    }
}

我正在尝试执行 Android 权限检查 - 但是从未调用过 onRequestPermissionsResult 方法。

我怀疑罪魁祸首是:(Activity) mContext

...但是我不能简单地使用:'this',因为包含此代码的类不是 Activity。

欢迎提出建议。

【问题讨论】:

    标签: android android-context android-6.0-marshmallow android-permissions runtime-permissions


    【解决方案1】:

    onRequestPermissionsResult() 需要在您传递给requestPermissions() 的Activity 上实现。

    欢迎提出建议

    在您的活动或片段中请求您的权限。无论如何,这些权限请求都必须与您的 UI 相关联,因此它们对用户有意义(例如,他们点击了触发权限请求的某某操作栏项目)。

    如果您希望将权限请求的结果转发给其他对象,欢迎您这样做。

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 2017-09-13
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多