您好,我试图通过联系方式获取姓名和电话号码 这是扩展BroadcastReceiver
的类public class TextMessageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent)
{
Bundle bundle=intent.getExtras();
Object[] messages=(Object[])bundle.get("pdus");
SmsMessage[] sms=new SmsMessage[messages.length];
for(int n=0;n<messages.length;n++){
sms[n]=SmsMessage.createFromPdu((byte[]) messages[n]);
}
for(SmsMessage msg:sms){
//MainActivity.
String num = getcont( MainActivity.,msg.getOriginatingAddress());
MainActivity.updateMessageBox("Message de la part: "+msg.getOriginatingAddress()+"\n"+
"Qui vous dit: "+msg.getMessageBody()+"\n");
}
}
在Onrecieve方法中,我得到了短信和发送短信的人,但是我想通过一些研究得到这个名字而不是数字:
public static String getcont (Context context ,String num)
{
Cursor people = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
String numbr = null;
while(people.moveToNext()) {
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = people.getString(nameFieldColumnIndex);
int numberFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);
String number = people.getString(numberFieldColumnIndex);
if (number.equals(num)) {
numbr = contact;
}
}
people.close();
return numbr;
}
我有一个名为MainActivity的Activity我尝试调用方法getcont()
String num = getcont( MainActivity ,msg.getOriginatingAddress());
但是它显示了这个错误
MainActivity无法解析为变量
还有另一种方式来呼叫getContentResolver().query()
和thnx来帮助我
答案 0 :(得分:0)
如何使用意图导航到MainActivity? 如果我完全理解你的要求......
而不是做
String num = getcont( MainActivity ,msg.getOriginatingAddress());
为什么不做这样的事情?
Intent ii=new Intent(MainActivity.this, newclass.class);
ii.putExtra("name", s);
startActivity(ii);