我想检测设备是否具有移动数据功能.通过移动数据功能,我不是指活动或连接的移动数据连接,而是指使用移动数据的能力.
我目前使用以下内容
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { //I assume device has mobile data capability}
这适用于大多数情况,但只有一个 – 如果设备没有呼叫设施但能够利用蜂窝网络进行数据连接.这种设备通常是具有SIM卡插槽的平板电脑,但它只能用于数据连接,而不能用于呼叫.
在这种情况下以及在所有其他情况下,如何检测设备是否具有移动数据功能?什么是最好的方法?
解决方法:
我自己找到了解决方案.将它发布给可能需要它的其他人.
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo ni = cm .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);if (ni == null) { // Device does not have mobile data capability}
从getNetworkInfo(int networkType)的文档:
Parameters: networkType integer specifying which networkType in which you’re interested.
Returns: a NetworkInfo object for the requested network type or null
if the type is not supported by the device. This method requires the
caller to hold the permission
androID.Manifest.permission.ACCESS_NETWORK_STATE.
可以扩展此方法以检查其他类型的网络.只需将所需的networkType放入getNetworkInfo()即可.
就个人而言,我只是在执行此测试时
getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
返回false.然后,此检查可以确认设备是否具有移动数据功能,即使它没有电话功能(某些平板电脑就是这种情况).如果设备有FEATURE_TELEPHONY,我认为它具有移动数据功能.这样我们可以在大多数情况下减少执行时间.
以上是内存溢出为你收集整理的检测Android设备是否具有移动数据功能全部内容,希望文章能够帮你解决检测Android设备是否具有移动数据功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)