gpt4 book ai didi

android - SmsManager 在三星设备上崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:48 25 4
gpt4 key购买 nike

我在尝试发送多部分 SMS 消息时收到来自三星设备的崩溃日志,这是导致崩溃的行:

SmsManager.getDefault().sendMultipartTextMessage(phone, null, SmsManager.getDefault().divideMessage(message), null, null)

其中 phone 是一个完全指定的不可为 null 的电话号码,message 是一个带有 ASCI 符号的长 String(最多 300 个字符)只要。唯一值得注意的可能是它包含用于文本分隔的 \n\n

这是崩溃日志:

Fatal Exception: java.lang.NullPointerException
Attempt to invoke interface method 'java.util.Iterator java.lang.Iterable.iterator()' on a null object reference
android.os.Parcel.readException (Parcel.java:1699)
android.os.Parcel.readException (Parcel.java:1646)
com.android.internal.telephony.ISms$Stub$Proxy.sendMultipartTextForSubscriber (ISms.java:1719)
android.telephony.SmsManager.sendMultipartTextMessageInternal (SmsManager.java:576)
android.telephony.SmsManager.sendMultipartTextMessage (SmsManager.java:544)

我试图查看崩溃日志中指定行的 SmsManager 源代码,但无济于事 - 它似乎已被 OEM 修改。

这也不应该是权限问题,因为我在执行 sendMultipartTextMessage 行之前检查了 SMS 权限。

崩溃发生在 Samsung Galaxy S6 和 J530F 手机上。除了那些之外,它从未被报道过。不幸的是,我没有三星设备来测试这个。

有没有人遇到过这个问题?提前致谢!

最佳答案

Samsung Galaxy S2 的特殊实现,它在 4.0.3 更新中有一个严重的错误。

See this bug

private static class GalaxyS2IcsSmsManager extends DonutSmsManager {

private static Method method;

static {
try {
Class<?> classSmsManager = Class.forName("android.telephony.SmsManager");

Class<?> paramTypes[] = new Class[9];

paramTypes[0] = String.class;
paramTypes[1] = String.class;
paramTypes[2] = ArrayList.class;
paramTypes[3] = ArrayList.class;
paramTypes[4] = ArrayList.class;
paramTypes[5] = Boolean.TYPE;
paramTypes[6] = paramTypes[7] = paramTypes[8] = Integer.TYPE;

method = classSmsManager.getMethod("sendMultipartTextMessage", paramTypes);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}

关于android - SmsManager 在三星设备上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53570669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com