我使用以下代码获取设备的首选 apn:
DefaultHttpClient http = new DefaultHttpClient();
Cursor mCursor = ctx.getContentResolver().query(Uri.parse("content://telephony/carriers/preferapn"), new String[] { "name", "proxy", "port"},null, null, null);
如果设置了代理我修改我的网络请求
if (mCursor != null) {
try {
if (mCursor.moveToFirst()) {
// String name = mCursor.getString(0);
String proxy = mCursor.getString(1);
String port = mCursor.getString(2);
if (proxy != null) {
if (!proxy.equals("")) {
HttpHost proxys = new HttpHost(proxy, Integer.parseInt(port));
http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxys);
}
}
}
} finally {
try {
mCursor.close();
} catch (Exception e) {
mCursor = null;
}
mCursor = null;
}
}
自 Android 4.2 以来,代码因安全异常而失败,用户和进程都没有 WRITE_APN_SETTINGS 权限。 我加了 和 但没有任何效果。 有人知道如何解决吗?
最佳答案
WRITE_APN_SETTINGS
现在是系统级权限:
"Ice Cream Sandwich" and WRITE_APN_SETTINGS
看来您需要将您的应用程序设置为系统应用程序才能使用 APN 设置,这需要有根电话。
关于android - 从 4.2 开始获取首选 apn 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515175/