Я пытаюсь получить SMS в своем приложении.
system.invalidcastexception: не может быть выброшен из типа источника в тип назначения
. at (warpper castclass)
object._ castClass_with_cache (Object, Intptr, Intptr) at at android.runtime.jnienv.copyarray
(intptr, java.lang.object []) at at
android.runtime.jnienv.getarray (intptr)
at messages.smsbroadcastreceiver.onreceive
(Android.content.Context, android.content.Intent) [0x0005f] в
c: \ users \ jase \ Documents \ Projects \ Сообщения \ Сообщения \ SMSBREDCASTRECEIVER. CS: 36
at
android.content.broadcastreceiver.n_onreceive_landroid_content_context_land_content_intent
(intptr, intptr, intptr, intptr) [0x00019] в
/uers /builder /data. /lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/mono.android/platforms/android-21/src/generated/android.content.breadcasterceiver.cs:334
at AT (Dynamic-Method)
bject.145A0C82-0DE6-4C2C-90A0-36544436A06C3
(Intptr, Intptr, Intptr, Intptr) < /p>
< /> < /> < /> Blockquote>
Вот код, который я использую: < /p>
using System;
using System.Text;
using Android.App;
using Android.OS;
using Android.Content;
using Android.Runtime;
using Android.Util;
using Android.Widget;
using Android.Telephony;
using Environment = System.Environment;
namespace Messages
{
[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })]
public class SMSBroadcastReceiver : BroadcastReceiver
{
private const string Tag = "SMSBroadcastReceiver";
private const string IntentAction = "android.provider.Telephony.SMS_RECEIVED";
public override void OnReceive(Context context, Intent intent)
{
Log.Info(Tag, "Intent: " + intent.Action);
if (intent.Action != IntentAction)
return;
var bundle = intent.Extras;
if (bundle == null)
return;
var pdus = bundle.Get("pdus");
// ********** This is the error line at runtime ****************
var castedPdus = JNIEnv.GetArray(pdus.Handle);
var messages = new SmsMessage[castedPdus.Length];
var stringBuilder = new StringBuilder();
for (int i = 0; i < messages.Length; i++)
{
var bytes = new byte[JNIEnv.GetArrayLength(castedPdus.Handle)];
JNIEnv.CopyArray(castedPdus.Handle, bytes);
messages = SmsMessage.CreateFromPdu(bytes);
stringBuilder.Append(String.Format("SMS from: {0}{1}Body: {2}{1}", messages.OriginatingAddress,
Environment.NewLine, messages.MessageBody));
}
Toast.MakeText(context, stringBuilder.ToString(), ToastLength.Long).Show();
}
}
}
< /code>
Я пытался придумать решение и искал, но ни одно из существующих решений этой ошибки не сработало. Что я могу попробовать дальше?Bundle not null: Bundle[mParcelledData.dataSize=256]
PDUS: [[B@5s294833
PDUS Handle: 2065454
Cannot cast from source type to destination type. at (wrapper castclass) object:__castclass_with_cache (object,intptr,intptr)
at Android.Runtime.JNIEnv.CopyArray[Object] (IntPtr src, Java.Lang.Object[] dest) [0x00078] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:946
at Android.Runtime.JNIEnv.GetArray[Object] (IntPtr array_ptr) [0x00053] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:1211
at Java.Lang.Object.ToArray[Object] () [0x00000] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Java.Lang/Object.cs:338
at Java.Lang.Object.op_Explicit (Java.Lang.Object value) [0x00008] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Java.Lang/Object.cs:499
at Messages.SMSBroadcastReceiver.OnReceive (Android.Content.Context context, Android.Content.Intent intent) [0x000ba] in c:\Users\Jase\Documents\Projects\Messages\Messages\SMSBroadcastReceiver.cs:52
< /code>
Я также хотел бы отметить, что я пробовал много вещей, чтобы решить эту проблему. Я сейчас (действительно) на странице 60 результатов поиска Google, пытаясь найти что -то . Проблема в том, что ни одно из решений, которые я нашел в Интернете для этой той же самой ошибки, на самом деле не работает, потому что они в основном просто крошечные варианты одного и того же утверждения, просто написанные немного по -другому, но делает то же самое, которое создает одно и то же исключение . < /p>
Я также попробовал следующее: < /p>
// var castedPdus = JNIEnv.GetObjectArrayElement(pdus.Handle, 0);
// Object castedPdus = (Object)bundle.Get("pdus");
// var castedPdus = JNIEnv.GetArray(pdus.Handle);
< /code>
Без какой -либо удачи. преобразовать объект [] в объект ». Ну, дух. Но проблема не в том, что я «делаю это неправильно», а в том, что мы сказали сделать это «неправильно». Нет другого способа получить SMS в Xamarin, который я могу найти в Интернете. Каждый пример онлайн, по -видимому, основан на этом единичном фрагменте кода - дайте или возьмите несколько незначительных изменений.
Подробнее здесь: https://stackoverflow.com/questions/275 ... -lang-obje
Невозможно привести тип источника к типу назначения (JNIEnv.GetArray(pudis.Handle);) ⇐ JAVA
Программисты JAVA общаются здесь
1737925992
Anonymous
Я пытаюсь получить SMS в своем приложении.
system.invalidcastexception: не может быть выброшен из типа источника в тип назначения
. at (warpper castclass)
object._ castClass_with_cache (Object, Intptr, Intptr) at at android.runtime.jnienv.copyarray
(intptr, java.lang.object []) at at
android.runtime.jnienv.getarray (intptr)
at messages.smsbroadcastreceiver.onreceive
(Android.content.Context, android.content.Intent) [0x0005f] в
c: \ users \ jase \ Documents \ Projects \ Сообщения \ Сообщения \ SMSBREDCASTRECEIVER. CS: 36
at
android.content.broadcastreceiver.n_onreceive_landroid_content_context_land_content_intent
(intptr, intptr, intptr, intptr) [0x00019] в
/uers /builder /data. /lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/mono.android/platforms/android-21/src/generated/android.content.breadcasterceiver.cs:334
at AT (Dynamic-Method)
bject.145A0C82-0DE6-4C2C-90A0-36544436A06C3
(Intptr, Intptr, Intptr, Intptr) < /p>
< /> < /> < /> Blockquote>
Вот код, который я использую: < /p>
using System;
using System.Text;
using Android.App;
using Android.OS;
using Android.Content;
using Android.Runtime;
using Android.Util;
using Android.Widget;
using Android.Telephony;
using Environment = System.Environment;
namespace Messages
{
[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })]
public class SMSBroadcastReceiver : BroadcastReceiver
{
private const string Tag = "SMSBroadcastReceiver";
private const string IntentAction = "android.provider.Telephony.SMS_RECEIVED";
public override void OnReceive(Context context, Intent intent)
{
Log.Info(Tag, "Intent: " + intent.Action);
if (intent.Action != IntentAction)
return;
var bundle = intent.Extras;
if (bundle == null)
return;
var pdus = bundle.Get("pdus");
// ********** This is the error line at runtime ****************
var castedPdus = JNIEnv.GetArray(pdus.Handle);
var messages = new SmsMessage[castedPdus.Length];
var stringBuilder = new StringBuilder();
for (int i = 0; i < messages.Length; i++)
{
var bytes = new byte[JNIEnv.GetArrayLength(castedPdus[i].Handle)];
JNIEnv.CopyArray(castedPdus[i].Handle, bytes);
messages[i] = SmsMessage.CreateFromPdu(bytes);
stringBuilder.Append(String.Format("SMS from: {0}{1}Body: {2}{1}", messages[i].OriginatingAddress,
Environment.NewLine, messages[i].MessageBody));
}
Toast.MakeText(context, stringBuilder.ToString(), ToastLength.Long).Show();
}
}
}
< /code>
Я пытался придумать решение и искал, но ни одно из существующих решений этой ошибки не сработало. Что я могу попробовать дальше?Bundle not null: Bundle[mParcelledData.dataSize=256]
PDUS: [[B@5s294833
PDUS Handle: 2065454
Cannot cast from source type to destination type. at (wrapper castclass) object:__castclass_with_cache (object,intptr,intptr)
at Android.Runtime.JNIEnv.CopyArray[Object] (IntPtr src, Java.Lang.Object[] dest) [0x00078] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:946
at Android.Runtime.JNIEnv.GetArray[Object] (IntPtr array_ptr) [0x00053] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:1211
at Java.Lang.Object.ToArray[Object] () [0x00000] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Java.Lang/Object.cs:338
at Java.Lang.Object.op_Explicit (Java.Lang.Object value) [0x00008] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/Java.Lang/Object.cs:499
at Messages.SMSBroadcastReceiver.OnReceive (Android.Content.Context context, Android.Content.Intent intent) [0x000ba] in c:\Users\Jase\Documents\Projects\Messages\Messages\SMSBroadcastReceiver.cs:52
< /code>
Я также хотел бы отметить, что я пробовал много вещей, чтобы решить эту проблему. Я сейчас (действительно) на странице 60 результатов поиска Google, пытаясь найти что -то . Проблема в том, что ни одно из решений, которые я нашел в Интернете для этой той же самой ошибки, на самом деле не работает, потому что они в основном просто крошечные варианты одного и того же утверждения, просто написанные немного по -другому, но делает то же самое, которое создает одно и то же исключение . < /p>
Я также попробовал следующее: < /p>
// var castedPdus = JNIEnv.GetObjectArrayElement(pdus.Handle, 0);
// Object castedPdus = (Object)bundle.Get("pdus");
// var castedPdus = JNIEnv.GetArray(pdus.Handle);
< /code>
Без какой -либо удачи. преобразовать объект [] в объект ». Ну, дух. Но проблема не в том, что я «делаю это неправильно», а в том, что мы сказали сделать это «неправильно». Нет другого способа получить SMS в Xamarin, который я могу найти в Интернете. Каждый пример онлайн, по -видимому, основан на этом единичном фрагменте кода - дайте или возьмите несколько незначительных изменений.
Подробнее здесь: [url]https://stackoverflow.com/questions/27544145/cannot-cast-from-source-type-to-destination-type-jnienv-getarrayjava-lang-obje[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия