为什么应用程序仅在 api 26 开始时崩溃
Why does app crash on start only on api 26
我有一个应用程序可以在每个 api 上完全运行,但在 android 8 api 26 时它崩溃了,我不知道为什么会这样。
该应用程序使用短信发送和接收权限,我将所有 requestPermissions 放在 activity 和清单中。目标 sdk 在 26
这里是应用程序崩溃时 android studio 错误的 logcat:
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)
无效的目的地地址??这是什么意思??
例如打开它时在 SmsManager.java
上有错误就像下面的图片在导入库中有错误一样
enter image description here
有人可以帮助我做什么吗?
根据 SmsManager
的源代码,当您使用 null
或空 String
的目标地址参数调用 sendTextMessage
时会抛出该异常。
如果您发送短信的代码(根据您的评论)是这样的:
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_sp
是一个 null
或空的 String
。
鉴于您初始化该变量的方式,可以:
- 从首选项中检索到的
"mystringName"
字段为空,或者
- 您的首选项字段名称不正确,您得到的是您指定为空的默认值
String
。
没有足够的信息来解释为什么只有 API 26 会发生这种情况......如果这就是你所说的。
终于找到问题了
问题出在我像 belo 一样使用 NavigationView 的 activity 布局中:
<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 及更高版本不支持
我有一个应用程序可以在每个 api 上完全运行,但在 android 8 api 26 时它崩溃了,我不知道为什么会这样。
该应用程序使用短信发送和接收权限,我将所有 requestPermissions 放在 activity 和清单中。目标 sdk 在 26
这里是应用程序崩溃时 android studio 错误的 logcat:
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)
无效的目的地地址??这是什么意思??
例如打开它时在 SmsManager.java
上有错误就像下面的图片在导入库中有错误一样
enter image description here
有人可以帮助我做什么吗?
根据 SmsManager
的源代码,当您使用 null
或空 String
的目标地址参数调用 sendTextMessage
时会抛出该异常。
如果您发送短信的代码(根据您的评论)是这样的:
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_sp
是一个 null
或空的 String
。
鉴于您初始化该变量的方式,可以:
- 从首选项中检索到的
"mystringName"
字段为空,或者 - 您的首选项字段名称不正确,您得到的是您指定为空的默认值
String
。
没有足够的信息来解释为什么只有 API 26 会发生这种情况......如果这就是你所说的。
终于找到问题了
问题出在我像 belo 一样使用 NavigationView 的 activity 布局中:
<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 及更高版本不支持