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

Java 为什么应用程序仅在api 26上启动时崩溃,java,android,android-8.0-oreo,Java,Android,Android 8.0 Oreo,我有一个应用程序完全可以在每个api上运行,但在android 8 api 26中它崩溃了,我不知道为什么会发生这种情况 该应用程序使用sms发送和接收权限,我将所有requestPermissions放入活动和清单中。目标sdk位于26 以下是应用程序崩溃时android studio错误的日志: hapital.com.BitCar E/AndroidRuntime: FATAL EXCEPTION: main Process: hapital.com.BitCar, PID: 25271

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

该应用程序使用sms发送和接收权限,我将所有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) 
无效的目标地址??这是什么意思

例如,当打开它时,
smsmsmanager.java
上有一个错误,就像下面的pic在导入库中有错误一样


有人能帮我做些什么吗?

根据
smsmsmanager
的源代码,当您使用目标地址参数
null
或空
字符串调用
sendTextMessage
时,会引发该异常

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

然后,它会得出来自_sp
string\u是
null
或空
string

根据您初始化该变量的方式,可以:

  • 从首选项检索的
    “mystringName”
    字段为空,或者
  • 您的首选项字段名称不正确,您得到的默认值指定为空
    字符串


没有足够的信息来解释为什么只有API 26会发生这种情况。。。如果你是这么说的话。

我终于找到了问题所在

问题出在我使用NavigationView的活动布局中,如下所示:

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="230dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main2"
app:menu="@menu/activity_main2_drawer" />


在api 26和更高版本中,不支持

可能是发送文本消息时目标地址错误。因此,请发布你的oncreate方法和发送短信方法的代码。我在oncreate中不使用短信读取或发送方法,但它在启动应用程序时崩溃。这里是我发送短信的方法:SharedReferences panelnumber=GetSharedReferences(“Prefs”,MODE_PRIVATE);String String_from_sp=panelnumber.getString(“myStringName”,“myStringName”);SmsManager SmsManager=smsmsmanager.getDefault();smsManager.sendTextMessage(字符串\u from_sp.toString(),null,smsBody.toString(),null,null);
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="230dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main2"
app:menu="@menu/activity_main2_drawer" />