文档章节

Android修改和添加APN网络

henry-zhang
 henry-zhang
发布于 2015/11/27 14:32
字数 443
阅读 3221
收藏 3

    由于工作中需要用到网络的判断和APN的切换,研究了一下Android中APN的修改和切换,关于APN的基础知识,这里就不在介绍了,自己百度就行!

    直接进入正题:

    1、建立一个android工程,需要如下权限:

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

    2、android 4.0版本以上,用户没有访问和修改APN的权限,所以,要修改和读取APN,必须让apk变成系统级应用(或者说拥有系统级权限)。有两个方法:(1)编译android源码,在android源码环境下编译apk。(2)取得手机root权限。我选择了第二种,具体操作为:把编译好的apk放入  /system/app/目录下,一定要记得修改apk的权限为  chmod 644 /system/app/apk,然后reboot,就可以搞定。

    3、获取所有APN, 方法是通过ContentResolver,uri地址为"content://telephony/carriers"。代码如下:

public Map<String, String> checkAPN() {
Map<String, String> map = new HashMap<String, String>();
Cursor cr = getContentResolver().query(CURRENT_APN_URI, null, null, null, null);
int i = 0;
while (cr != null && cr.moveToNext()) {
String id = cr.getString(cr.getColumnIndex("_id"));
map.put("id"+i, id);
String apn = cr.getString(cr.getColumnIndex("apn"));
map.put("apn"+i, apn);
}
return map;
}

    4、设置当前APN,Uri地址为"content://telephony/carriers/preferapn",代码如下:

public void SetAPN(int id) {
ContentResolver resolver = this.getContentResolver();
ContentValues values = new ContentValues();
values.put("apn_id", id);
resolver.update(CURRENT_APN_URI, values, null, null);
}

    5、新增APN,同上,可以用insert新增一条APN,Uri地址为"content://telephony/carriers"。

    6、APN数据在手机中保存的位置:

        所有的APN数据都保存在:/data/data/com.android.providers.telephony/databases/telephony.db。可以通过adb取出来查看,如下图:

    数据库中的current字段为”1“时,是用户在手机设置->移动网络->接入点可以设置的APN。

© 著作权归作者所有

henry-zhang
粉丝 2
博文 62
码字总数 1431
作品 0
海淀
私信 提问
rk3288 Android7.1 4G 三网(联通,电信,移动)拨号问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/WXXGoodJob/article/details/95209135 一、问题描述: 1. 4G模块移植...

WXXGoodJob
07/09
0
0
Android开发之APN网络切换

本文介绍Android平台中关于APN网络切换的相关知识以及如何实现APN切换。   由于最近的项目中用到APN切换的功能,所以就借着这个机会介绍一下APN的相关知识及如何在Android实现切换过程。关...

james_laughing
2014/10/15
389
0
android网络类型 wap代理设置

1、很多人都知道移动提供的两个不同的接入点,即:CMWAP 和 CMNET ,前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务的。它们在实现方式上并没有任何差别...

caikezhan
2012/07/19
589
1
Android MMS 源码流程

概述 MMS的收发操作借助于手机的短信机制,实际收发过程需要网络的APN支持,使用特定的APN接入点实现MMS数据的真实发送和接收; 源码流程 1) Telephpony.java getOrCreateThreadId()函数: ...

鉴客
2012/01/29
3.3K
0
简单易懂的Android ROM定制与修改教程

简单易懂的Android ROM定制与修改教程 每个人对手机都有不同的要求,这里我想谈谈我的修改ROM的方法,其中大部分是总结于论坛中其他帖子,有一小部分是自己总结的经验。玩Android手机可为个层...

庸人谷
2012/12/07
11.1K
2

没有更多内容

加载失败,请刷新页面

加载更多

TiDB 最佳实践系列(三)乐观锁事务

作者:Shirly TiDB 最佳实践系列是面向广大 TiDB 用户的系列教程,旨在深入浅出介绍 TiDB 的架构与原理,帮助用户在生产环境中最大限度发挥 TiDB 的优势。我们将分享一系列典型场景下的最佳实...

TiDB
30分钟前
6
0
原来缓存是这样

经过一闪而过的一个灵感,记下来,我觉得缓存的定义应该是这样定义的: 我之前一直认为缓存的词义是错误的:是在读取到值之后,再次被使用的时候,不会去取新的值,而是使用旧的值,这是是错...

走向人生巅峰的大路
32分钟前
5
0
数字货币交易所开发常用的7个开源撮合引擎

如果你希望按照自己的需求打造金融交易平台,那么应当选择合适的交易撮合引擎进行二次开发而不是基于完整的交易平台实现进行修改。本文将介绍10个采用不同语言开发的开源的撮合引擎,你可以根...

汇智网教程
35分钟前
5
0
Spring Security做JWT认证和授权

Spring Security做JWT认证和授权

乐逍遥-镜子
37分钟前
5
0
LNMP---日志不记录静态文件、日志切割、静态文件过期缓存、nginx防盗链

4.39 日志不记录静态文件 4.40 日志切割 4.41 静态文件过期缓存 4.42 nginx防盗链 扩展: yum install lrzsz -yrz 上传文件sz filename 这样去把这个文件推送到windows上 一、日志不记录...

tobej
48分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部