我的问题是关于Android Studio。我正在尝试实现以下方法:setNetworkSelectionModeManual 从telephonymanager库成功。 每当调用它时,应用程序就会崩溃。可能是允许的事情,将不胜感激。
代码:
public void startTimer(){
countDownTimer = new CountDownTimer(timeLeftInMillisecond,1000) {
@Override
public void onTick(long l) {
timeLeftInMillisecond = l;
updateTimer();
}
@Override
public void onFinish() {
//switching to a different network by mpln
boolean networkChanged = tm.setNetworkSelectionModeManual("USAW6", false);
//restart timer
countDownTimer.start();
}
}.start();
logcat中的错误:
07-22 18:14:04.941 27289-27310 / com.example.yakir.webbing_hlr E / OpenGLRenderer:allen debug liyu键:0 07-22 18:14:04.944 27289-27310 / com.example.yakir.webbing_hlr E / OpenGLRenderer:allen debug liyu键:34359738371 07-22 18:14:04.945 27289-27310 / com.example.yakir.webbing_hlr E / OpenGLRenderer:allen debug liyu键:240518168576 07月22日18:14:04.946 27289-27310 / com.example.yakir.webbing_hlr E / OpenGLRenderer:艾伦调试liyu键:68724719680 07-22 18:14:08.062 27289-27289 / com.example.yakir.webbing_hlr I / hwaps:JNI_OnLoad 07-22 18:14:08.110 27289-27310 / com.example.yakir.webbing_hlr E / OpenGLRenderer:allen debug liyu键:103084458052 07-22 18:14:18.107 27289-27289 / com.example.yakir.webbing_hlr E / AndroidRuntime:FATAL EXCEPTION:main 流程:com.example.yakir.webbing_hlr,PID:27289 java.lang.NoSuchMethodError:类Landroid / telephony / TelephonyManager中没有虚拟方法setNetworkSelectionModeManual(Ljava / lang / String; Z)Z或其超级类(“ android.telephony.TelephonyManager”的声明出现在/system/framework/framework.jar:classes2.dex中) 在com.example.yakir.webbing_hlr.MainActivity $ 2.onFinish(MainActivity.java:74) 在android.os.CountDownTimer $ 1.handleMessage(CountDownTimer.java:127) 在android.os.Handler.dispatchMessage(Handler.java:105) 在android.os.Looper.loop(Looper.java:156) 在android.app.ActivityThread.main(ActivityThread.java:6523) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:942) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 07-22 18:14:18.158 27289-27289 / com.example.yakir.webbing_hlr I / Process:正在发送信号。 PID:27289 SIG:9
答案 0 :(得分:1)
问题在于,由于此方法调用setNetworkSelectionModeManual(),因此该应用程序仅可在Android 9或更高版本的设备[Android P:API:28]上运行
setNetworkSelectionModeManual(Ljava/lang/String;Z)Z in class
Landroid/telephony/TelephonyManager; or its super classes (declaration of
'android.telephony.TelephonyManager' appears in
/system/framework/framework.jar:classes2.dex) at
com.example.yakir.webbing_hlr.MainActivity$2.onFinish(MainActivity.java:74) at
setNetworkSelectionModeManual方法仅在API级别28 [Android P / Android 9]中添加
在 API级别28 公共布尔中添加了setNetworkSelectionModeManual setNetworkSelectionModeManual(String operatorNumeric, booleanpersistentSelection)要求无线电连接到输入网络并将选择模式更改为手动。
需要权限:MODIFY_PHONE_STATE或调用应用程序具有 运营商特权(请参见hasCarrierPrivileges())。
我看不到所有相关代码,但是您的活动中有一些东西在调用该方法或执行与电话相关的任务,导致该方法被调用。
解决方案:
示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { // or 28
// Call the method
} else {
// Call different methods, possibly deprecated ones that do the same thing
}