CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 21 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Generare SMS in ingresso fasullo

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jun 2011
    Località
    MN
    Messaggi
    3
    Smartphone
    .

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Generare SMS in ingresso fasullo

    Ciao a tutti, ho un problema che non riesco a risolvere

    Seguendo un articolo sul web ero riuscito a generare nella mia app un SMS in ingresso fasullo....solo che dalla versione 4.1.2 di Android mi ritorna sempre una una SecurityException: Not allowed to start service Intent { act=android.intent.action.SERVICE_STATE cmp=com.android.mms/.transaction.SmsReceiverService (has extras) } without permission.

    questo è il metodo che chiamo
     
    1
        
    2
    public void sendSms(String sender, String body) 
    3
    {
    4
       byte [] pdu = null ;
    5
       byte [] scBytes = PhoneNumberUtils.networkPortionToCalledPartyBCD( "0000000000" );
    6
       byte [] senderBytes = PhoneNumberUtils.networkPortionToCalledPartyBCD(sender);
    7
       int lsmcs = scBytes.length;
    8
       byte [] dateBytes = new byte [ 7 ];
    9
       Calendar calendar = new GregorianCalendar();
    10
       dateBytes[ 0 ] = reverseByte(( byte ) (calendar.get(Calendar.YEAR)));
    11
       dateBytes[ 1 ] = reverseByte(( byte ) (calendar.get(Calendar.MONTH) + 1 ));
    12
       dateBytes[ 2 ] = reverseByte(( byte ) (calendar.get(Calendar.DAY_OF_MONTH)));
    13
       dateBytes[ 3 ] = reverseByte(( byte ) (calendar.get(Calendar.HOUR_OF_DAY)));
    14
       dateBytes[ 4 ] = reverseByte(( byte ) (calendar.get(Calendar.MINUTE)));
    15
       dateBytes[ 5 ] = reverseByte(( byte ) (calendar.get(Calendar.SECOND)));
    16
       dateBytes[ 6 ] = reverseByte(( byte ) ((calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)) / ( 60 * 1000 * 15 )));
    17
        try 
    18
        {
    19
          ByteArrayOutputStream bo = new ByteArrayOutputStream();
    20
          bo.write(lsmcs);
    21
          bo.write(scBytes);
    22
          bo.write( 0x04 );
    23
          bo.write(( byte ) sender.length());
    24
          bo.write(senderBytes);
    25
          bo.write( 0x00 );
    26
          bo.write( 0x00 );  // encoding: 0 for default 7bit
    27
          bo.write(dateBytes);
    28
          try 
    29
          {
    30
            String sReflectedClassName = "com.android.internal.telephony.GsmAlphabet";
    31
            Class cReflectedNFCExtras = Class.forName(sReflectedClassName);
    32
            Method stringToGsm7BitPacked = cReflectedNFCExtras.getMethod("stringToGsm7BitPacked", new Class[] 
    33
            { String.class });
    34
            stringToGsm7BitPacked.setAccessible(true);
    35
            byte[] bodybytes = (byte[]) stringToGsm7BitPacked.invoke(null,body);
    36
            bo.write(bodybytes);
    37
          } 
    38
          catch(Exception e) 
    39
          {
    40
        Log.e(ShadowSMSSmsSend.class.getName(),"Error",e);
    41
        broadcastIntent = new Intent();
    42
        broadcastIntent.setAction("SMS_RECEIVED_ERROR");
    43
        aContext.sendBroadcast(broadcastIntent);            
    44
          }
    45
            pdu = bo.toByteArray();
    46
          } 
    47
          catch (IOException e) 
    48
          {
    49
        Log.e(ShadowSMSSmsSend.class.getName(),"Error",e);
    50
        broadcastIntent = new Intent();
    51
        broadcastIntent.setAction("SMS_RECEIVED_ERROR");
    52
        aContext.sendBroadcast(broadcastIntent);        
    53
          }
    54
            try
    55
            {
    56
               broadcastIntent = new Intent("android.provider.Telephony.SMS_RECEIVED"); 
    57
               broadcastIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    58
               broadcastIntent.setClassName("com.android.mms" ,"com.android.mms.transaction.SmsReceiverService");
    59
               broadcastIntent.putExtra( "pdus" , new Object[] { pdu });
    60
               broadcastIntent.putExtra( "format", "3gpp");
    61
            aContext.startService(broadcastIntent); 
    62
    63
            }
    64
            catch (Exception e)
    65
            {
    66
           Log.e(ShadowSMSSmsSend.class.getName(),"Error",e);
    67
           broadcastIntent = new Intent();
    68
           broadcastIntent.setAction("SMS_RECEIVED_ERROR");
    69
           aContext.sendBroadcast(broadcastIntent);        
    70
            }
    71
       }
    72


    Quello che mi da più fastidio è che via emulatore anche se utilizzo una ver. 4.1.2 di android funziona, mentre sul mio GS 2 no.

    Sapete se c'e un modo per farlo funzionare?

    Nel mio manifest ho messo come autorizzazioni:

    13
     
    1
    2
            <uses-permission android:name="android.permission.VIBRATE" />
    3
        <uses-permission android:name="android.permission.WRITE_SMS" />
    4
        <uses-permission android:name="android.permission.READ_SMS" />
    5
        <uses-permission android:name="android.permission.RECEIVE_SMS" />
    6
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMP  LETED" /> 
    7
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_ST  ORAGE" />
    8
        <uses-permission android:name="android.permission.INTERNET" />
    9
            <uses-permission android:name="android.permission.ACCESS_NETWORK_ST  ATE" />
    10
            <uses-permission android:name="android.permission.CHANGE_NETWORK_ST  ATE" />
    11
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE  " />
    12
            <uses-permission android:name="android.permission.CHANGE_WIFI_STATE  "/>
    13

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Jun 2011
    Località
    MN
    Messaggi
    3
    Smartphone
    .

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Problema risolto o almeno non si può risolvere in quanto il fatto che si potesse richiamare la SmsReceiverService era un problema si sicurezza che è stato poi "risolto" da google con una patch rilasciata da un'aggiornamento.

  4. #3
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    5

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    buongiorno!
    sto programmando un'applicazione per android e volevo sapere se posso chiedere delle info di programmazione.
    Mi servirebbe sapere come avviare la mia applicazione (quando è in background o stoppata) appena arriva un sms da un determinato numero telefonico...
    L'applicazione dovrebbe a quel punto avviarsi e farmi leggere il messaggio che è arrivato da quel determinato numero.
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy