Я работаю с мобильным приложением, и мне нужно разрешить пользователям приложения создавать настраиваемые APN (имя точки доступа) . Итак, согласно документации разработчика android. Я сделал так:
String host = "mms.example.com";
byte[] ipAddress = new byte[4];
InetAddress mmsProxy;
try {
mmsProxy = InetAddress.getByAddress(host, ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
return;
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
ApnSetting apn = new ApnSetting.Builder()
.setApnName("Hutch")
.setEntryName("APN")
.setMmsc(Uri.parse("http://mms.example.com:8002"))
.setMmsProxyAddress(mmsProxy)
.setMmsProxyPort(8799)
.setOperatorNumeric("123456789")
.setProxyPort(123)
.setUser("testUser")
.setPassword("testPassword")
.setAuthType(ApnSetting.AUTH_TYPE_CHAP)
.setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_EMERGENCY)
.setProtocol(ApnSetting.PROTOCOL_IPV4V6)
.setRoamingProtocol(ApnSetting.PROTOCOL_IPV4V6)
.setNetworkTypeBitmask(TelephonyManager.NETWORK_TYPE_CDMA)
.setMvnoType(ApnSetting.MVNO_TYPE_GID)
.setCarrierEnabled(true)
.build();
DevicePolicyManager pm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName cm = new ComponentName(context, OperationManager.class);
int insertedId = pm.addOverrideApn(cm,apn); //the exception is throwing in here
if (insertedId == -1) {
Log.e(TAG,"********unsuccess*********");
} else {
Log.i(TAG,"********success*********" + insertedId);
}
}
Но есть следующее исключение:
E/Volley: [4680] NetworkDispatcher.processRequest: Unhandled exception java.lang.SecurityException: No active admin ComponentInfo{io.khd.agent/org.kdh.services.operation.OperationManager}
java.lang.SecurityException: No active admin ComponentInfo{io.kdh.agent/org.kdh.services.operation.OperationManager}
at android.os.Parcel.createException(Parcel.java:1966)
at android.os.Parcel.readException(Parcel.java:1934)
at android.os.Parcel.readException(Parcel.java:1884)
at android.app.admin.IDevicePolicyManager$Stub$Proxy.addOverrideApn(IDevicePolicyManager.java:11791)
at android.app.admin.DevicePolicyManager.addOverrideApn(DevicePolicyManager.java:10785)
Исключение - выброс из строки int insertedId = pm.addOverrideApn(cm,apn);
. Я думаю, что для создания настраиваемой APN нам нужно получить разрешение владельца устройства. Это правильно? Так что я должен сделать для этой проблемы? Если вы можете объяснить это, мы очень поможем.