在我的Android应用程序中,我想获取所有可用的APN并检查客户端APN是否可用。我想使用此客户端APN运行我的应用程序。
有没有办法在Android上实现这一目标?
答案 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);
}