次のコードを順番に使用して、デバイスの優先 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 権限がありません。追加しましたが、何も機能しません。誰もそれを修正する方法を知っていますか?