我在oder中使用以下代码来获取设备的首选apn:
DefaultHttpClient http = new DefaultHttpClient();
Cursor mCursor = ctx.getContentResolver().query(Uri.parse("content://telephony/carriers/preferapn"), new String[] { "name", "proxy", "port"},null, null, null);
如果设置了代理,我修改我的webrequest
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。 我补充道 和 但没有任何作用。 有人知道如何解决这个问题吗?
答案 0 :(得分:1)
WRITE_APN_SETTINGS
现在是系统级权限:
"Ice Cream Sandwich" and WRITE_APN_SETTINGS
您似乎需要将应用程序设置为系统应用程序才能使用APN设置,并且需要有根电话。