2012-08-04 5 views
0

Je suis nouveau sur Android, j'ai besoin de votre aide. qu'est-ce que j'essaie d'afficher un nouveau message entrant sur la boîte de dialogue d'alerte ?? et faire cliquable le contenu "lien" dans le messagelien cliquable dans le message android

ce mon activité message

public class SecureMessagesActivity extends Activity implements OnClickListener, OnItemClickListener 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

    setTheme(android.R.style.Theme_Light); 
    setContentView(R.layout.main); 

    /** 
    * You can also register your intent filter here. 
    * And here is example how to do this. 
    * 
    * IntentFilter filter = new IntentFilter( "android.provider.Telephony.SMS_RECEIVED"); 
    * filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); 
    * registerReceiver(new SmsReceiver(), filter); 
    **/ 

    this.findViewById(R.id.UpdateList).setOnClickListener(this); 
    } 

    ArrayList<String> smsList = new ArrayList<String>(); 

    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) 
{ 
    try 
    { 
     String[] splitted = smsList.get(pos).split("\n"); 
     String sender = splitted[0]; 
     String encryptedData = ""; 
     for (int i = 1; i < splitted.length; ++i) 
     { 
      encryptedData += splitted[i]; 
     } 
     String data = sender + "\n" + StringCryptor.decrypt(new String(SmsReceiver.PASSWORD), encryptedData); 
     Toast.makeText(this, data, Toast.LENGTH_SHORT).show(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 

    public void onClick(View v) 
    { 

    ContentResolver contentResolver = getContentResolver(); 
    Cursor cursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null); 

    int indexBody = cursor.getColumnIndex(SmsReceiver.BODY); 
    int indexAddr = cursor.getColumnIndex(SmsReceiver.ADDRESS); 
    //int indexCont = cursor.getColumnIndex(SmsReceiver.READ); 

    if (indexBody < 0 || !cursor.moveToFirst()) return; 

    Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Simple Alert"); 
    builder.setMessage("This is simple alert box"); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      dialog.dismiss(); 
     } 

    }); 
    smsList.clear(); 

    do 
    { 
     String str = "Sender: " + cursor.getString(indexAddr) + "\n" + cursor.getString(indexBody); 
     smsList.add(str); 
    } 
    while(cursor.moveToNext()); 


    ListView smsListView = (ListView) findViewById(R.id.SMSList); 
    smsListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, smsList)); 
    smsListView.setOnItemClickListener(this); 
} 

public void DisplayAlert() { 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Simple Alert"); 
    builder.setMessage(R.string.app_name); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      dialog.dismiss(); 

     } 
     }); 
    AlertDialog alert = builder.create(); 
    alert.show();   
} 

mon smsReceive.java

public class SmsReceiver extends BroadcastReceiver 
    { 
// All available column names in SMS table 
    // [_id, thread_id, address, 
// person, date, protocol, read, 
// status, type, reply_path_present, 
// subject, body, service_center, 
// locked, error_code, seen] 

public static final String SMS_EXTRA_NAME = "pdus"; 
public static final String SMS_URI = "content://sms"; 

public static final String ADDRESS = "address"; 
    public static final String PERSON = "person"; 
    public static final String DATE = "date"; 
    public static final String READ = "read"; 
    public static final String STATUS = "status"; 
    public static final String TYPE = "type"; 
    public static final String BODY = "body"; 
    public static final String SEEN = "seen"; 

    public static final int MESSAGE_TYPE_INBOX = 1; 
    public static final int MESSAGE_TYPE_SENT = 2; 

    public static final int MESSAGE_IS_NOT_READ = 0; 
    public static final int MESSAGE_IS_READ = 1; 

    public static final int MESSAGE_IS_NOT_SEEN = 0; 
    public static final int MESSAGE_IS_SEEN = 1; 

    // Change the password here or give a user possibility to change it 
    public static final byte[] PASSWORD = new byte[]{ 0x20, 0x32, 0x34, 0x47, (byte) 0x84, 0x33, 0x58 }; 

public void onReceive(Context context, Intent intent) 
{ 
    // Get SMS map from Intent 
    Bundle extras = intent.getExtras(); 

    String messages = ""; 

    if (extras != null) 
    { 
     // Get received SMS array 
     Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME); 

     // Get ContentResolver object for pushing encrypted SMS to incoming folder 
     ContentResolver contentResolver = context.getContentResolver(); 

     for (int i = 0; i < smsExtra.length; ++i) 
     { 
      SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]); 

      String body = sms.getMessageBody().toString(); 
      String address = sms.getOriginatingAddress(); 

      messages += "SMS from " + address + " :\n";      
      messages += body + "\n"; 



      // Here you can add any your code to work with incoming SMS 
      // I added encrypting of all received SMS 

      putSmsToDatabase(contentResolver, sms); 
     } 


     // Display SMS message 
     // Toast.makeText(context, messages, Toast.LENGTH_SHORT).show(); 
     } 


} 

private void putSmsToDatabase(ContentResolver contentResolver, SmsMessage sms) 
{ 
    // Create SMS row 
    ContentValues values = new ContentValues(); 
    values.put(ADDRESS, sms.getOriginatingAddress()); 
    values.put(DATE, sms.getTimestampMillis()); 
    values.put(READ, MESSAGE_IS_NOT_READ); 
    values.put(STATUS, sms.getStatus()); 
    values.put(TYPE, MESSAGE_TYPE_INBOX); 
    values.put(SEEN, MESSAGE_IS_NOT_SEEN); 
    try 
    { 
     String encryptedPassword = StringCryptor.encrypt(new String(PASSWORD), sms.getMessageBody().toString()); 
     values.put(BODY, encryptedPassword); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

    // Push row into the SMS table 
    contentResolver.insert(Uri.parse(SMS_URI), values); 
} 
    } 

Répondre