Android Java无法在片段中显示requestPermission

问题描述

我用很多日志测试了我的应用程序,看来我的应用程序停留在ActivityCompat.requestPermissions上,并且不显示任何消息。我认为问题可能出在 getActivity(),因为我在片段中。

@Override
public void onViewCreated(@NonNull final View view,@Nullable Bundle savedInstanceState) {
    super.onViewCreated(view,savedInstanceState);
    result = view.findViewById(R.id.tab3Result);
    progressBar = view.findViewById(R.id.tab3ProgressBar);
    view.findViewById(R.id.tab3GetLocation).setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (ContextCompat.checkSelfPermission(getActivity().getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_DENIED) {
                ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE_LOCATION_PERMISSION);
            } else {
                getCurrentLocaiton();
            }
        }
    });
}

解决方法

首先,我想指出一个错字: getCurrentLocaiton();

除此之外:

可能是您的背景吗?我的意思是,如果问题仅是拼写错误,那么这是完全不相关的,请首先解决该问题。

getApplicationContext()引用整个应用程序上下文。
替代方法是getContext(),它引用您所在的特定视图。

我正在阅读有关内容,发现了一些有用的信息。 https://developer.android.com/training/permissions/requesting //您需要在上下文中请求的部分。

然后我读到以下内容: Difference between getContext(),getApplicationContext(),getBaseContext() and "this"

由于您位于片段中,因此您可能需要在片段中请求权限。