clickable link in message android
问题描述:
我是新来的android,我需要你的帮助。 我试图在警报对话框上显示新的传入消息?并且使可点击的内容“链接”的消息clickable link in message android
这是我的邮件活动
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();
}
我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);
}
}
答
如果你试图打开短信收件箱,这应该求助:
How can I get clickable hyperlinks in AlertDialog from a string resource?
launch sms application with an intent
使用Linkify来建立链接。
嘿,你能看到我的节目吗? – user1520642 2012-08-05 14:16:32