Null Issue with NeighboringCellInfo, CID and LAC

匿名 (未验证) 提交于 2019-12-03 01:25:01

问题:

For a while I was trying to get CellID and LAC of near base stations. Unfortunately I did not manage to do that. First option was to use:

GsmCellLocation xXx = new GsmCellLocation();       CID = xXx.getCid();       LAC = xXx.getLac();       Toast output = Toast.makeText(getApplicationContext(), "Base station LAC is "+LAC+"\n"        +"Base station CID is " +CID, Toast.LENGTH_SHORT);       output.show(); 

But in this case I receive -1 value (as I understand that means it is not a GSM, but when i check with isGSM it shows "true"). Another way I have found surfing the net (i updated it a bit)

public void GetID(){    List  neighCell = null;   TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);   neighCell = telManager.getNeighboringCellInfo();    for (int i = 0; i 

But in this case the application just crashes right after I press the execute button. Eclipse shows no errors. May be someone have any ideas how to fix my problems?

Logcat says: 10-05 22:53:27.923: ERROR/dalvikvm(231): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

Used permissions:

May be the problem is that i forgot to include:

TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE); 

Update. I included row from above, crash is gone but now after I press the button nothing happens. Updated source code.

回答1:

Have you verified that you have the correct permissions set in your manifest file?

The TelephonyManager requires a number of permissions depending on the API you use. You need READ_PHONE_STATE for most of the API's, in addition the documentation for getNeighboringCellInfo mentions ACCESS_COARSE_UPDATES, however I think this may be a doc mistake and you actually need ACCESS_COARSE_LOCATION which is documented as "Allows an application to access coarse (e.g., Cell-ID, WiFi) location"



回答2:

The cellid implementation varies from mobile device to mobile device since these features are considered to be optional. for example:

Samsung (all devices): getNeigbouringCells () is not supported at all and always returns an empty list.

according to this: http://wiki.opencellid.org/wiki/Android_library



回答3:

Had the same problem. Try to run the query for neighboring cells on a forked thread (non-UI). At least where I had the problem was that hammerhead android check for that and would return null immediately leaving a log in logcat:

@PhoneInterfaceManager: getNeighboringCellInfo RuntimeException - This method will deadlock if called from the main thread. 


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