IBeacon getting warning Implcit intents are not safe on callback of MonitorNotifier

老子叫甜甜 提交于 2019-12-23 05:35:12

问题


I am using Android 4.4 and getting a warning message in the callback of Monitoring when a beacon with specified region is found.

code I am using for monitoring is

@Override
public void onIBeaconServiceConnect() {

    iBeaconManager.setMonitorNotifier(new MonitorNotifier() {
        @Override
        public void didEnterRegion(Region region) {
          Log.e("didEnterRegion","I just saw an iBeacon for the first time!");       
        }

        @Override
        public void didExitRegion(Region region) {
            Log.e("didExitRegion","I no longer see an iBeacon");
        }

        @Override
        public void didDetermineStateForRegion(int state, Region region) {
            Log.e("didDetermineStateForRegion","I have just switched from seeing/not seeing iBeacons: "+state);   

            if(state == MonitorNotifier.INSIDE){
                try {
                    //Start Ranging in the Region.
                    iBeaconManager.startRangingBeaconsInRegion(region);
                } catch (RemoteException e) { 
                    System.out.println(e);
                }

            }
            else if(state == MonitorNotifier.OUTSIDE){
                try {
                    //Stop Ranging in the Region.
                    iBeaconManager.stopRangingBeaconsInRegion(region);
                } catch (RemoteException e) { 
                    System.out.println(e);
                }

            }
        }
        });

        try {
            //Start Monitoring in the Region.
            iBeaconManager.startMonitoringBeaconsInRegion(region);
        } catch (RemoteException e) { 
            System.out.println(e);
        }

and the warning message I found in logcat is

04-19 14:32:08.156: D/BluetoothAdapter(10564): startLeScan(): null 
04-19 14:32:08.166: D/BluetoothAdapter(10564): onClientRegistered() - status=0 clientIf=5 
04-19 14:32:08.176: D/IBeaconService(10564): Scan started 
04-19 14:32:08.186: D/IBeaconManager(10564): Got a ranging callback 
04-19 14:32:08.186: D/IBeaconManager(10564): Got a ranging callback with 0 iBeacons 
04-19 14:32:08.186: D/IBeaconManager(10564): Calling ranging notifier on :com.example.ranging.BackgroundRanging$4@4226f1e8 
04-19 14:32:08.787: D/BluetoothAdapter(10564): onScanResult() - Device=4A:92:06:A9:FA:87 RSSI=-52 
04-19 14:32:08.787: D/IBeaconService(10564): got record 
04-19 14:32:08.797: D/IBeacon(10564): calculating accuracy based on rssi of -52.0 
04-19 14:32:08.797: D/IBeaconService(10564): iBeacon detected :128f4e13-01ef-4618-bffa-50fed67f24aa 1001 3003 accuracy: 0.47659904336004005 proximity: 1 
04-19 14:32:08.797: D/Callback(10564): attempting callback via intent: com.example.service.DID_MONITORING 
04-19 14:32:08.807: W/ContextImpl(10564): Implicit intents with startService are not safe: Intent { act=com.example.service.DID_MONITORING (has extras) } android.content.ContextWrapper.startService:494 com.radiusnetworks.ibeacon.service.Callback.call:85 com.radiusnetworks.ibeacon.service.IBeaconService.processIBeaconFromScan:438  
04-19 14:32:08.817: D/IBeaconService(10564): looking for ranging region matches for this ibeacon 
04-19 14:32:08.817: D/IBeaconService(10564): matches ranging region: proximityUuid: 128f4e13-01ef-4618-bffa-50fed67f24aa major: null minor:null 
04-19 14:32:09.257: D/IBeaconService(10564): Done with scan cycle 
04-19 14:32:09.257: D/IBeaconService(10564): Calling ranging callback with 1 iBeacons 
04-19 14:32:09.257: D/Callback(10564): attempting callback via messenger 
04-19 14:32:09.257: D/IBeaconService(10564): Restarting scan.  Unique beacons seen last cycle: 1 
04-19 14:32:09.257: D/BluetoothAdapter(10564): stopLeScan() 

回答1:


This warning appears with outdated versions of the Android iBeacon Library, 0.7 or prior. The latest version is 0.7.6 and will not have this warning. The easy solution is to simply upgrade to the latest version of the library available here.

The warning has to do with the way that iBeacon data are passed between the library's background service and your app. Early versions of the library used an "implicit intent" to pass this information, which could theoretically cause iBeacon data to the wrong app if two apps were on the phone using the library simultaneously. For development purposes, it doesn't really matter, but you should use the latest library version if using it in a production app.



来源:https://stackoverflow.com/questions/23152547/ibeacon-getting-warning-implcit-intents-are-not-safe-on-callback-of-monitornotif

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!