Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getAllCellInfo()在第7行中返回一个空列表_Android_Telephonymanager_Cellinfo - Fatal编程技术网

Android getAllCellInfo()在第7行中返回一个空列表

Android getAllCellInfo()在第7行中返回一个空列表,android,telephonymanager,cellinfo,Android,Telephonymanager,Cellinfo,我有一个android应用程序,可以获取手机发射塔的信息。我使用这个getAllCellInfo()获取主单元格和相邻单元格的信息。我在manifest.xml中包含了ACCESS\u\u LOCATION权限,并在运行时请求该权限。 它适用于其他手机,但在华为荣誉7中,该函数返回空列表 我的代码: Catlog: 我检查了其他人的问题: 和 从一个问题来看,我认为华为手机在我安装和之前不支持getAllCellInfo(),而且应用程序似乎可以在华为荣誉7中获取手机信息: 网络单元信息精

我有一个android应用程序,可以获取手机发射塔的信息。我使用这个getAllCellInfo()获取主单元格和相邻单元格的信息。我在manifest.xml中包含了ACCESS\u\u LOCATION权限,并在运行时请求该权限。 它适用于其他手机,但在华为荣誉7中,该函数返回空列表

我的代码:

Catlog:

我检查了其他人的问题: 和

从一个问题来看,我认为华为手机在我安装和之前不支持getAllCellInfo(),而且应用程序似乎可以在华为荣誉7中获取手机信息:

网络单元信息精简版

网络怪物


有人知道这方面的信息吗?

为了解决
getAllCellInfo()
中没有单元格的问题,我使用
getCellLocation()
获取primaryCellId和TrackingArecode,如下所示:

    Log.d(TAG, "updateCurrentCell: can't find any cells with getAllCellInfo");
    CellLocation primaryLocation = telephonyManager.getCellLocation();
    if (primaryLocation != null) {
        int primaryCellId = Integer.parseInt(primaryLocation.toString().split(",")[1]);
        int trackingAreaCode = Integer.parseInt(primaryLocation.toString().split(",")[0].replace("[", ""));
    } else {
        Log.d(TAG, "updateCurrentCell: not even with getCellLocation");
    }

实现CellInfo()的方法有很多

某些设备不支持getAllCellInfo()

  • 请尝试telephonyManager.getNeightringCellInfo()(此方法已被弃用,但仍受某些设备支持)

  • 若要从该设备获取cellinfo,请尝试在SDK(API)21上构建应用程序。(不推荐)


  • (能够显示所有信息的应用程序很可能是在API 21或更低版本上构建和针对的)

    虽然这来得晚,但对遇到同样问题的其他人可能会有所帮助

    首先让我解释一下问题:

    • 我试图在我的应用程序中使用
      getAllCellInfo()
    • 该应用程序在Android Emulator(单Sim Emulator)上运行顺利
    • 然后我在运行安卓6.0的“双Sim卡,华为CAM-L21”和运行安卓4.4.2的“双Sim卡,荣誉3c”上试用了它。但是在华为,
      getAllCellInfo()
      返回了Empy列表,而null则返回了荣誉
    • 我试着用“lgk8”。但Android Studio无法识别该手机。我在LG网站上找不到手机驱动程序(适用于windows)!所以我安装了一些通用的ADB驱动程序。不幸的是,Android Studio没有再次识别该手机
    • 应用程序在一些单sim卡华为和三星手机上运行良好;我想不起那些模型了
    然后:

    • 我发现上面提到的
      getAllCellInfo
      在某些手机上可能不起作用:

      private void getAllCellInfo(列出cellInfo){
      //仅针对已注册的单元格返回标识
      //Galaxy Nexus中的SlimKat-返回空值:-/
      //荣誉7-返回空列表(非空),双卡?
      // ...
      }

    • 我找到了。据报道,我把LG的司机放下来了;最后,Android Studio重新确认了LG K8手机

    • 最后,我的应用程序在双sim手机上运行

    因此,我的发现:

    • getAllCellInfo
      在一些华为/荣誉双卡手机上不起作用

    • 使用,以便Android Studio识别LG手机


    可能已经太晚了,但是当你瞄准Android 10或更高版本时,你应该调用requestCellInfoUpdate

    val subscriptionManager = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE)
                        as SubscriptionManager
                for (subs in subscriptionManager.activeSubscriptionInfoList) {
                    val telephonyManager =
                        (getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager)
                            .createForSubscriptionId(subs.subscriptionId)
                    telephonyManager.requestCellInfoUpdate(mainExecutor,
                        object : TelephonyManager.CellInfoCallback() {
                            override fun onCellInfo(cellInfo: MutableList<CellInfo>) {
                                println("updated_cells_count: ${cellInfo.size}")
                            }
    
                            override fun onError(errorCode: Int, detail: Throwable?) {
                                super.onError(errorCode, detail)
                                println("updated_cells_error:\n")
                                detail?.printStackTrace()
                            }
                        })
                }
    
    val subscriptionManager=getSystemService(Context.TELEPHONY\u SUBSCRIPTION\u服务)
    作为订阅管理器
    for(subscriptionManager.ActiveSubscriptionInfo列表中的子项){
    val电话管理器=
    (作为TelephonyManager的getSystemService(Context.TELEPHONY_服务)
    .createForSubscriptionId(subs.subscriptionId)
    telephonyManager.requestCellInfoUpdate(mainExecutor,
    对象:TelephonyManager.CellInfoCallback(){
    覆盖fun onCellInfo(cellInfo:MutableList){
    println(“更新的单元格计数:${cellInfo.size}”)
    }
    覆盖错误(错误代码:Int,详细信息:可丢弃?){
    super.onError(错误代码、详细信息)
    println(“更新的单元格错误:\n”)
    详细信息?.printStackTrace()
    }
    })
    }
    
    Hey phuwin,您是否找到了此问题的解决方案?我也一样problem@Royz不是真的…嗨,普温!你找到解决办法了吗?为什么NetworkCellInfo工作得很好?当我打印primaryLocation对象时,我会得到以下行:'primaryLocation:GsmCellLocation:[…]'