Android Java无法在片段中显示requestPermission

Posted

技术标签:

【中文标题】Android Java无法在片段中显示requestPermission【英文标题】:Android Java Can't display requestPermission in fragment 【发布时间】:2020-12-29 10:50:14 【问题描述】:

我用大量日志测试了我的应用程序,似乎我的应用程序卡在了 ActivityCompat.requestPermissions 并且没有显示任何消息。我认为问题可能出在 getActivity() 因为我在 Fragment 中。

@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();
            
        
    );

【问题讨论】:

查看此链接:***.com/questions/40760625/… 【参考方案1】:

首先我想指出一个错字: 获取当前位置();

除此之外:

这可能是您的上下文吗?我的意思是,如果问题只是拼写错误,那么这完全无关紧要,因此请先修复它。

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

我正在阅读它并发现了一些可能有用的信息。 https://developer.android.com/training/permissions/requesting //你需要在上下文中请求的部分。

然后我读到这个: Difference between getContext() , getApplicationContext() , getBaseContext() and "this"

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

【讨论】:

以上是关于Android Java无法在片段中显示requestPermission的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 片段中获取 Java.Lang.NullPointerException

java 将循环显示和不显示过渡动画添加到Android片段

将Android片段移动到不同的容器无法更改片段的容器ID

如何使用java将数据从片段传递到android中的另一个片段?

Android:通过片段进行相机预览。从活动中确定

Android YouTube Player API Fragment无法手动处理触摸事件