3
A
답변
10
uri content://telephony/carriers/preferapn
을 사용하여 프로그래밍 방식으로 기본 APN을 쿼리하고 설정할 수 있습니다. 새로운 기본 APN을 설정하려면 기존 APN 항목의 데이터베이스 ID를 전달해야합니다. (: setPreferredApn(context, "Giffgaff");
예)
public static final Uri APN_TABLE_URI = Uri.parse("content://telephony/carriers");
public static final Uri APN_PREFER_URI = Uri.parse("content://telephony/carriers/preferapn");
public static boolean setPreferredApn(Context context, String name) {
boolean changed = false;
String columns[] = new String[] { Carriers._ID, Carriers.NAME };
String where = "name = ?";
String wargs[] = new String[] {name};
String sortOrder = null;
Cursor cur = context.getContentResolver().query(APN_TABLE_URI, columns, where, wargs, sortOrder);
if (cur != null) {
if (cur.moveToFirst()) {
ContentValues values = new ContentValues(1);
values.put("apn_id", cur.getLong(0));
if (context.getContentResolver().update(APN_PREFER_URI, values, null, null) == 1)
changed = true;
}
cur.close();
}
return changed;
}
나는 당신이 WRITE_APN_SETTINGS 권한이 필요하다는 것을 추가하고 android.provider.Telephony와 안드로이드를 가져와야한다 생각 당신이 APN의 표시 이름에 전달하면 다음 함수는이 작업을 수행 할 수 있습니다. provider.Telephony.Carriers이
UPDATE는 4.0
위한이 기능은 안드로이드 4.0 (ICS)의 출시와 함께 사용할되었다. WRITE_APN_SETTINGS 권한을 설정해도 APN을 더 이상 설정할 수는 없습니다. 관련 링크는 this question을 참조하십시오. API page에서이 사용 권한은 외부 사용을위한 것이 아니며 내부적으로 적용됩니다.
-1
나는 방법이 있다고 생각하지 않는다. 아무리해도, 통신사는 소프트웨어 업데이트로 그것을 닦을 수있다. 또한 미국 내 AT & T와 같은 일부 통신사의 경우 특정 APN을 사용하면 해당 사용자의 가입자 번호 (전화 번호가 아니라 고유 한 ID)를 얻는 것과 같은 특정 기능을 제공합니다. 따라서 핸드셋에 설치된 수많은 다른 응용 프로그램에 영향을 미치기 때문에이 변경을 강제하는 것은 좋지 않을 수 있습니다.
해답을 제공해 주셔서 감사합니다. 즉,이 코드를 실행하면 장치의 모든 응용 프로그램이 특정 APN을 사용하게됩니까? – Paz
예. 이렇게하면 장치 선호 APN이 설정됩니다. – patthoyts
감사합니다. 어떤 giffgaff 앱을 만들었습니까? –