在Android上以编程方式设置APN

时间:2010-10-11 06:17:27

标签: android

在我的Android应用程序中,我想获取所有可用的APN并检查客户端APN是否可用。我想使用此客户端APN运行我的应用程序。

有没有办法在Android上实现这一目标?

3 个答案:

答案 0 :(得分:5)

这可能无法直接回答您的问题。看看this。但请注意,此代码仅供参考,不应在您的应用中使用。

获取已定义的APN:

Cursor c = getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), null, null, null, null);

然后参考Telephony.Carriers了解相关列。

答案 1 :(得分:3)

如果您想阅读适用于Android 4.2及更多版本的APN,则可以进行更改。我测试了它,它确实有用。

在Android 4.1及更高版本中使用此:

Cursor c = getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), null, null, null, null);

对于Android 4.2及更多版本,请使用此代码:

private static final String[] APN_PROJECTION = {
     Telephony.Carriers.TYPE,            // 0
     Telephony.Carriers.MMSC,            // 1
     Telephony.Carriers.MMSPROXY,        // 2
     Telephony.Carriers.MMSPORT          // 3
 };

这一行:

final Cursor apnCursor =SqliteWrapper.query(context, this.context.getContentResolver(), Uri.withAppendedPath(Carriers.CONTENT_URI, "current"), APN_PROJECTION, null, null, null);

隐藏了SQLiteWrapperClass(我在Internet上找到了这个类)。

import android.database.sqlite.SqliteWrapper;

答案 2 :(得分:0)

您需要获得许可:

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

代码:

 private void addApn(Intent intent) {
        final String apn = intent.getStringExtra(APN_EXTRA_APN);
        final String name = intent.getStringExtra(APN_EXTRA_NAME);
        final String type = intent.getStringExtra(APN_EXTRA_TYPE);
        final String proxy = intent.getStringExtra(APN_EXTRA_PROXY);
        final int mnc = intent.getIntExtra(APN_EXTRA_MNC, 6);
        final int mcc = intent.getIntExtra(APN_EXTRA_MCC, 724);
        final String user = intent.getStringExtra(APN_EXTRA_USER);
        final String password = intent.getStringExtra(APN_EXTRA_PASSWORD);
        final String server = intent.getStringExtra(APN_EXTRA_SERVER);

        final ContentResolver cr = mContext.getContentResolver();
        ContentValues values = new ContentValues();
        values.put(Telephony.Carriers.APN, apn);
        values.put(Telephony.Carriers.NAME, name);
        values.put(Telephony.Carriers.TYPE, type);
        values.put(Telephony.Carriers.PROXY, proxy);
        values.put(Telephony.Carriers.MNC, mnc);
        values.put(Telephony.Carriers.MCC, mcc);
        values.put(Telephony.Carriers.USER, user);
        values.put(Telephony.Carriers.PASSWORD, password);
        values.put(Telephony.Carriers.SERVER, server);
        cr.insert(Telephony.Carriers.CONTENT_URI, values);
    }