2

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

4

1 に答える 1

1

WRITE_APN_SETTINGS

システム レベルのアクセス許可になりました:

「アイスクリーム サンドイッチ」と WRITE_APN_SETTINGS

APN設定を使用できるようにするには、アプリケーションをシステムアプリとして設定する必要があるようです。これには、ルート化された電話が必要です。

于 2012-11-22T15:13:39.903 に答える