0

在下面的代码中,getCid()、getPsc()、getLac()、GetMnc()、getMcc() 都产生相同的值。

在 API 17 上测试,具有权限

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"/>

在java中

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
List<CellInfo> cellinoflist= tm.getAllCellInfo();
for(CellInfo cellinfo : cellinoflist)
{
...
CellInfoGsm GSMinfo = (CellInfoGsm) cellinfo;
CellIdentityGsm gsmCellIdentity= GSMinfo.getCellIdentity();
if(gsmCellIdentity!= null) {
        Log.d(TAG, " mCid: "+gsmCellIdentity.getCid()+" mPsc: "+
             gsmCellIdentity.getPsc()+" mLac: "+gsmCellIdentity.getLac()+
     " mMnc: "+gsmCellIdentity.getMnc()+" mMcc:"+gsmCellIdentity.getMcc());
    }
 .....
}

日志猫

mCid: 2147483647 mPsc: 2147483647 mLac: 2147483647 mMnc: 2147483647 mMcc:2147483647

我在这里错过了什么,请建议我。

4

1 回答 1

0

应该清楚“2147483647”是一个最大的int值。很可能代码有问题,并且该值是默认最大值,而不仅仅是相同的值。

首先你应该检查:

if(cell instanceof CellIdentityGsm){...

在铸造之前。除非它只是被排除在外。

于 2013-09-23T20:55:51.583 回答