xml权限配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lc.NewAPN"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".NewAPNActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
package com.lc.NewAPN;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class NewAPNActivity extends Activity {
/** Called when the activity is first created. */
private Button btnNewAPN;
private static Uri APN_LIST_URI = Uri.parse("content://telephony/carriers");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnNewAPN=(Button)findViewById(R.id.btnNewAPN);
btnNewAPN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String apnName="myapn";
AddXFTApn(apnName);
boolean isAddSuccess= checkApnIsExist(apnName);
if(isAddSuccess){
Toast.makeText(NewAPNActivity.this, "新增APN成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(NewAPNActivity.this, "新增APN失败", Toast.LENGTH_SHORT).show();
}
}
});
}
public boolean checkApnIsExist(String ApnName){
int id = -1;
ContentResolver resolver = this.getContentResolver();
Cursor c = resolver.query(APN_LIST_URI, new String[] { "_id", "name", "apn" }, "apn like '%"+ApnName+"%'", null, null); //从apn列表中查找apn名称为myapn的apn信息
if (c != null && c.moveToNext()) {
id = c.getShort(c.getColumnIndex("_id")); //获取该apn的id信息
System.out.println("APN已经存在");
} else {
System.out.println("APN不存在");
return false;
}
return true;
}
protected String getSIMInfo() {
TelephonyManager iPhoneManager = (TelephonyManager) this.getSystemService(this.TELEPHONY_SERVICE);
return iPhoneManager.getSimOperator();
}
public int AddXFTApn(String apnName) {
System.out.println("添加一个新的apn ==> XFT APN");
int apnId = -1;
String NUMERIC = getSIMInfo();
if (NUMERIC == null) {
Toast.makeText(this, "不存在SIM卡", Toast.LENGTH_SHORT).show();
return -1;
}
ContentResolver resolver = this.getContentResolver();
ContentValues values = new ContentValues();
values.put("name","李川"); //apn中文描述
values.put("apn", apnName); //apn名称
values.put("type", "default,supl");
values.put("numeric", NUMERIC);
values.put("mcc", NUMERIC.substring(0, 3));
values.put("mnc", NUMERIC.substring(3, NUMERIC.length()));
values.put("proxy", "");
values.put("port", "");
values.put("mmsproxy", "");
values.put("mmsport", "");
values.put("user", "");
values.put("server", "");
values.put("password", "");
values.put("mmsc", "");
Cursor c = null;
// 获取新添加的apn的ID
try {
Uri newRow = resolver.insert(APN_LIST_URI, values);
if (newRow != null) {
c = resolver.query(newRow, null, null, null, null);
int idindex = c.getColumnIndex("_id");
c.moveToFirst();
apnId = idindex;
}
} catch (SQLException e) {
e.printStackTrace();
}
if (c != null)
c.close();
return apnId;
}
}