android - 对于以下 android API 28 级别,“ApnSetting.Builder”的替代方法是什么?
问题描述
我正在尝试创建一个移动应用程序以将 APN(接入点网络)添加到移动应用程序中。然后我根据下面的android文档使用了 ApnSetting.Builder() 。
package com.example.myapplication;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.telephony.data.ApnSetting;
import android.util.Log;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class MainActivity extends AppCompatActivity {
private static String TAG = "MainActivity";
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create an MMS proxy address with a hostname. A network might not be
// available, so supply a dummy (0.0.0.0) IPv4 address to avoid DNS lookup.
String host = "mms.example.com";
byte[] ipAddress = new byte[4];
InetAddress mmsProxy;
try {
mmsProxy = InetAddress.getByAddress(host, ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
return;
}
ApnSetting apn=null;
try{
apn = new ApnSetting.Builder()
.setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
.setApnName("apn.example.com")
.setEntryName("Example Carrier APN")
.setMmsc(Uri.parse("http://mms.example.com:8002"))
.setMmsProxyAddress(mmsProxy)
.setMmsProxyPort(8799)
.build();
}catch (NoClassDefFoundError error){
error.printStackTrace();
}
ComponentName componentName = new ComponentName(getApplicationContext(), MainActivity.class);
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getApplicationContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyManager.addOverrideApn(componentName,apn);
}
}
但ApnSetting.Builder()
在 Android 9(API 级别 28)中添加。它不支持 API 28 中的以下内容。
@RequiresApi(api = Build.VERSION_CODES.P)
但我还需要将这个移动应用程序创建到以下 android 版本,如 Lollipop、Marshmallow、Nougat。所以我需要知道是否有替代方法ApnSetting.Builder()
。然后我该怎么做。
解决方案
ApnSetting.Builder 中没有什么是您不能自己做的。它主要是让您将调用链接到 setter 以使您的代码更易于阅读的方法。像:
/**
* Sets the proxy address of the APN.
*
* @param proxy the proxy address to set for the APN
*/
@NonNull
public Builder setProxyAddress(@Nullable String proxy) {
this.mProxyAddress = proxy;
return this;
}
您可以查看AOSP 中的源代码以了解我的意思。
推荐阅读
- haskell - 类子类结构的设计模式
- sql-server - SQL Server 存储过程中的连续 While 循环
- sql - 在 R 中将正则表达式应用于 SQL 数据库
- node.js - 无法通过 Slack API 发布消息 - 出现错误“no_text”
- c - 如何使用带有文件名的 strstr()
- angular - 无法以角度安装 npm bootstrap@3
- mysql - 在某些装有 Windows 10 的电脑上启动 Mysql 服务时未启动
- r - 使用 data.table 在分组中添加两个变异列
- php - 签署请求时我做错了什么?AWS SignatureV4 和 PHP
- android - 是否可以用“/”分割 EditText 来创建日期?