问题描述
我用很多日志测试了我的应用程序,看来我的应用程序停留在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"
由于您位于片段中,因此您可能需要在片段中请求权限。