为什么仅在api 26上启动时应用崩溃

时间:2018-09-18 11:07:31

标签: java android android-8.0-oreo

我有一个可以完全在每个api上运行的应用程序,但是在android 8 api 26中它崩溃了,我不知道为什么会这样。

该应用使用短信发送和接收权限,我将所有requestPermissions放入活动和清单中。目标sdk位于26

在应用崩溃时,这是android studio错误的日志:

hapital.com.BitCar E/AndroidRuntime: FATAL EXCEPTION: main Process: hapital.com.BitCar, PID: 25271
java.lang.RuntimeException: Unable to start activity ComponentInfo{hapital.com.BitCar/hapital.com.BitCar.MainActivity}: java.lang.IllegalArgumentException: Invalid destinationAddress
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: java.lang.IllegalArgumentException: Invalid destinationAddress
    at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:320)
    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:312)
    at hapital.com.BitCar.MainActivity.onCreate(MainActivity.java:194)
    at android.app.Activity.performCreate(Activity.java:6975)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

无效的destinationAddress?是什么意思?

例如,打开时SmsManager.java上有错误,就像下面的图片在导入库中有错误一样 enter image description here

有人可以帮我做什么吗?

2 个答案:

答案 0 :(得分:0)

根据SmsManager的源代码,当您使用目标地址参数sendTextMessage或空null调用String时,会抛出该异常。

如果您发送短信的代码(根据您的评论)是这样的:

 SharedPreferences panelnumber = getSharedPreferences("Prefs", MODE_PRIVATE);
 String string_from_sp = panelnumber.getString("myStringName", ""); 
 SmsManager smsManager = SmsManager.getDefault();
 smsManager.sendTextMessage(string_from_sp.toString(), null,
                            smsBody.toString(), null, null);

然后得出string_from_spnull或空String的情况。

给出初始化该变量的方式,或者:

  • 从首选项中检索的"mystringName"字段为空,或
  • 您的首选项字段名称不正确,并且您获得的默认值已指定为空的String

没有足够的信息来解释为什么仅使用API​​ 26会发生这种情况……如果您要这么说。

答案 1 :(得分:0)

最后我找到了问题

问题出在我使用类似于belo的NavigationView的活动布局中:

plt

并且在api 26及更高版本中不支持