安卓 6.0+ : Method onRequestPermissionsResult not call

标签 android

这是我的 map fragment :

public class MapFragmentTab extends Fragment implements OnMapReadyCallback {
    private GoogleMap googleMap;
    private GoogleApiClient mGoogleApiClient;
    private static final int MY_PERMISSION_LOCATION = 1;   

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.map_fragment_tab, container, false);
        init();
        return rootView;
    }

    private void init() {
        if (mGoogleApiClient == null) {
            mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                    .addApi(LocationServices.API)
                    .build();
        }
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) 
        mapView = rootView.findViewById(R.id.mapView);
        if (mapView != null) {
            mapView.onCreate(null);
            mapView.onResume();
            mapView.getMapAsync(this);
        }
    }

    @Override
    public void onMapReady(GoogleMap map) {
        googleMap = map;       
        int permissionCheck = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION);
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION);
        } else {                
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
         // some code here
        }
    }          

Android 4.3 上一切正常。

但是当我第一次在 Android 6.0+ 上启动时,然后显示提示对话框以获得权限。像这样:

Allow My application to access this device's location?

Deny Allow

我点击了允许,但是onRequestPermissionsResult 方法没有被调用。 我的代码有什么问题?

最佳答案

而不是调用

ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION)

这样调用

requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_LOCATION, PERMISSIONS_CODE)

当你使用android.support.v4.app.Fragment时,你必须调用requestPermissions

AppCompatActivity时,应该使用ActivityCompat.requestPermissions

关于安卓 6.0+ : Method onRequestPermissionsResult not call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201151/

相关文章:

Android Intent to Gmail 不通过 FileProvider 附加文​​件 "Unable to attach file"

android - PhoneGap/Cordova Android 在 onDeviceReady 后获取屏幕尺寸

android - ionic 在启动时模拟 android 在 30 分钟后仍然显示点

android - 提交给 Web 服务器的希伯来语字符串未以希伯来语接收

android - 改造 - 在插入硬编码查询后附加动态查询

android - Kindle Fire 和 disable_keyguard 权限

android - 如何设计没有框和下划线的自定义EditText?

Android ADK 蓝牙设备兼容性

java - 获取两个日期之间包含 'date_added' 的行不起作用

Android 聊天 VoIP 与 PTT,无需 SIP - 多播、AudioStream、Audiogroup 不起作用