Autore Topic: Extras nell'intent  (Letto 661 volte)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Extras nell'intent
« il: 19 Maggio 2011, 18:26:15 CEST »
0
Salve, probabilmente sarà una domanda scema ma non ne sono venuto a capo

Un extra che viene recuperato in questo modo da un intent:

Codice (Java): [Seleziona]
public void onReceive(Context context, Intent intent) {
       
        Bundle bundle = intent.getExtras();
        Object[] ext= (Object[]) bundle.get("ext");
        byte[] pdu = (byte[]) ext[0];


come è stato caricato nell'intent? Per capirsi io devo generare un intent che ha un object[] recuperabile in quel modo ( per chi ha intuito e conosce, il byte[] del pdus del sms

ho provato a senso
Codice (Java): [Seleziona]
        Intent intent = new Intent();
        intent.setAction("android.provider.Telephony.SMS_RECEIVED");

        Object[] ext = new Object[1];
        ext[0] = new byte[5];
        intent.putExtra("ext", ext);


ma mi da un errore al momento della esecuzione della metodo "get" nel receiver:

Citazione
05-19 18:24:40.347: ERROR/AndroidRuntime(10114): FATAL EXCEPTION: main
05-19 18:24:40.347: ERROR/AndroidRuntime(10114): java.lang.IllegalStateException: Could not execute method of the activity
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.view.View$1.onClick(View.java:2160)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.view.View.performClick(View.java:2501)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.view.View$PerformClick.run(View.java:9107)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.os.Handler.handleCallback(Handler.java:587)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.os.Looper.loop(Looper.java:123)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.app.ActivityThread.main(ActivityThread.java:3835)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at java.lang.reflect.Method.invoke(Method.java:507)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at dalvik.system.NativeStart.main(Native Method)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114): Caused by: java.lang.reflect.InvocationTargetException
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at java.lang.reflect.Method.invoke(Method.java:507)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at android.view.View$1.onClick(View.java:2155)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     ... 11 more
05-19 18:24:40.347: ERROR/AndroidRuntime(10114): Caused by: java.lang.ClassCastException: [B
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     at sms.emu.EmuSms.onSend(EmuSms.java:54)
05-19 18:24:40.347: ERROR/AndroidRuntime(10114):     ... 14 more





idee?


Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Extras nell'intent
« Risposta #1 il: 19 Maggio 2011, 19:15:11 CEST »
0
quando crei l'array, crealo direttamente come byte[] e non object[]
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:Extras nell'intent
« Risposta #2 il: 21 Maggio 2011, 14:47:08 CEST »
0
Il codice che avevo postato io era corretto....avevo fatto un errore io nel mio codice passando al intent.putExtra("ext", ext); al posto di ext il byte[].......

Adesso funziona, nel senso che lancio il broadcast e le applicazioni sul telefono che erano in ascolto dei messaggi in ingresso mi lanciano la notifica nella opportuna barra

Purtroppo però il messaggio non viene memorizzato.

Questo mi fa pensare che il servizio di sistema che è incaricato di salvare i messaggi non sia in ascolto su quell'intent ma su qualcos'altro

Sapete chiarirmi le idee? Altrimenti dovrei implementare io nel mio programma anche la memorizzazione del sms....

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:Extras nell'intent
« Risposta #3 il: 21 Maggio 2011, 15:01:10 CEST »
0
uhm ho capito dove sta il problema

mancava la permission: android.permission.BROADCAST_SMS

Comunque anche se aggiunta nel manifest è come se la riconoscesse

Ho cercato un po' su internet e dicono che sia una permission privilegiata acquisibile solo da applicazioni di sistema...più precisamente firmate con la stessa "sign" della piattaforma

Sapete come aggirare la cosa?