小编Wal*_*ale的帖子

不在后台监控时提示位置许可?

我正在使用Android Beacon Library.从Marshmallow开始,我看到了以下错误,正如预期和记录的那样.

权限拒绝:需要ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限才能获取扫描结果

我在Fragment中有我的测距代码,当Fragment在屏幕上时会抛出RuntimeException,正如我没有提示允许的那样.如果我点击主页按钮,则调用Pause,并且我解除了beaconManager的绑定,并且不再按预期抛出异常.从之前的应用列表返回Activity,每次扫描都会再次抛出RuntimeException.

即使我已将权限添加到AndroidManifest,为什么在前台抛出异常?

根据此处的文档 ,如果您在后台执行扫描,则只需要提示用户获取位置权限?

当你尝试在后台进行蓝牙扫描时,你会在LogCat中收到以下错误,并且不会检测到信标

仅仅意味着后台扫描,还是我误解了文档,你必须提示无论如何?如果可以避免的话,我想避免在应用程序内部提示允许的额外(可能是紧张的用户).

我的清单包含 -

<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

片段中我的剪切代码是 -

public class NearMeNowFragment extends Fragment implements BeaconConsumer {

//Beacon manager stuff
private BeaconManager beaconManager;

<SNIP>


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    beaconManager = BeaconManager.getInstanceForApplication(getActivity());
    beaconManager.getBeaconParsers().add(new BeaconParser().
            setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.near_me_now, container, false);

    //Set up beacon stuff if Bluetooth available
    if …
Run Code Online (Sandbox Code Playgroud)

android ibeacon-android altbeacon android-6.0-marshmallow

7
推荐指数
1
解决办法
1万
查看次数