android app设置首选网络方法

方法一

在 Telephony 中增加一个服务允许配置(以android4.4为例)

主要是通过 setPreferredNetworkModeForPhone 方法配置

添加静态服务
packages/services/Telephony/src/com/android/phone/NetTypeReceiver.java

	public class NetTypeReceiver extends BroadcastReceiver {
	    private static final String LOG_TAG = NetTypeReceiver.class.getSimpleName();
	    public static final String ACTION_UPDATE_CALLER_INFO_CACHE =
	            "com.android.phone.CHANGE_NETWORK_MODE";
	    private int mPhoneId = 0; 
	    private Phone mPhone;
	
	    @Override
	    public void onReceive(Context context, Intent intent) {
	        Bundle bundle = intent.getExtras();
	        int modemNetworkMode = 0;
	        Log.d(LOG_TAG,  "NetTypeReceiver#onReceive(). Intent: " + intent);
	        // mPhoneId = getIntent().getIntExtra(NetTypeReceiver.SUB_ID, 0);
	        Log.d(LOG_TAG, "mPhoneId:" + mPhoneId);
	        mPhone = (PhoneFactory.getPhones())[mPhoneId];
	        if (mPhone != null) {
	            if (bundle != null) {
	                modemNetworkMode = bundle.getInt("com.android.phone.NETWORK_MODE");
	            }
	            Log.d(LOG_TAG, "NetTypeReceiver#onReceive(). mPhone ceate success");
	            int primaryCard = TelephonyManager.from(mPhone.getContext()).getPrimaryCard();
	            Log.d(LOG_TAG, "NetTypeReceiver#onReceive(). primaryCard:" + primaryCard);
	            if (modemNetworkMode != -1 && SimManager.isValidPhoneId(primaryCard)) {
	                RadioTaskManager.getDefault().setPreferredNetworkModeForPhone(primaryCard,
	                        modemNetworkMode);
	            }
	        }
	    }
	
	}

在 xml 中配置

	<receiver android:name="NetTypeReceiver">
        <intent-filter>
            <action android:name="com.android.phone.CHANGE_NETWORK_MODE" />
        </intent-filter>
    </receiver>

在app中通过设置属性和广播配置

	private static final int PREFERRED_NETWORK_MODE_4G_3G_2G = 0;
	private static final int PREFERRED_NETWORK_MODE_3G_2G = 1;
 	private static final int PREFERRED_NETWORK_MODE_2G_ONLY = 4;

	public void setPreferedNetWorkType(Context context, int mode){
        Settings.Secure.putInt(context.getContentResolver(), "preferred_network_mode", mode);
        Intent intent = new Intent("com.android.phone.CHANGE_NETWORK_MODE");
        intent.putExtra("com.android.phone.NETWORK_MODE", mode);
        context.sendBroadcast(intent);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值