Andoird는 시스템 기본 구성 APN을 추가합니다.

1. 프로젝트 시나리오 및 문제 설명

플랫폼: RK3288
시스템: Android5.1

클라이언트 시스템은 홍콩(코드; HK)의 캐비닛으로, 홍콩 SIM 카드를 사용하여 처음으로 공장 설정을 굽거나 복원하고 설정 - 모바일 네트워크 - 액세스 포인트 이름 - APN은 홍콩에 대한 정보를 식별할 수 있습니다. 사이드 , 그러나 그들 중 어느 것도 선택되지 않고 수동 선택이 필요합니다.다른 SIM 카드를 변경하고 (동일한 운영자 번호가 다름) 다시 시작하면 수동으로 다시 선택해야합니다.

로컬 테스트에서는 China Mobile(4G) SIM 카드를 사용하며, 이 SIM 카드를 켜면 China Mobile cmnet 액세스 포인트 이름이 자동으로 선택됩니다.


둘째, 시스템에서 APN 기본 구성 파일의 위치:

시스템 APN의 기본 구성은 system/etc/apns-conf.xml이 파일에서 나오며 소스코드 vendor/rockchip/common/phone/etc/apns-full-conf.xml파일에서 생성됩니다.일반적으로 프로젝트에 따라 위치가 다를 수 있습니다.찾을 수 없으면 직접 찾을 수 있습니다. apns-conf.xml apn 정보에 기존의 많은 것, 구성해야 하는 새 APN을 추가합니다.

예를 들어 고객이 제공한 홍콩의 apn 옵션은 다음과 같습니다.

<apn carrier="3 HK" mcc="454" mnc="03" apn="ipc.lte.three.com.hk" type="default,supl" />

3. 시작할 때 구성된 APN이 기본적으로 선택됩니다.

apn 추가 및 구성 후 부팅을 다시 하고 홍콩의 SIM 카드를 삽입하고 설정-모바일 네트워크-액세스 포인트 이름-APN에 새로 추가된 APN이 있지만 기본적으로 선택되어 있지 않음 ; 그러나 China Mobile 또는 China Unicom 기능을 사용할 때 기본적으로 선택됩니다. 이 문제는 소스 코드를 수정하여 해결할 수 있습니다.

packages/apps/Settings/src/com/android/settings/ApnSettings.java에서 fillList() 메서드를 찾습니다.

private void fillList() {
    
    
...
boolean selectable = ((type == null) || !type.equals("mms"));
pref.setSelectable(selectable);

//add by fy start
//如果name和apn和numeric满足自己配置的条件,就直接setChceked
if("3 HK".equals(name) && "ipc.lte.three.com.hk".equals(apn) && where.contains("45403")){
    
    
      pref.setChecked();
      apnList.addPreference(pref);
      Log.d("fy","3 HK");
} else{
    
    
//add by fy end
        if (selectable) {
    
    
                if ((mSelectedKey != null) && mSelectedKey.equals(key)) {
    
    
                        pref.setChecked();
                }
                apnList.addPreference(pref);
        } else {
    
    
                mmsApnList.add(pref);
        }
}
...
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45639314/article/details/131682712
Recomendado
Clasificación