如何在BroadcastReceiver中使用getContentResolver()。query()

时间:2014-12-23 12:03:03

标签: java android broadcastreceiver

您好,我试图通过联系方式获取姓名和电话号码 这是扩展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来帮助我

1 个答案:

答案 0 :(得分:0)

如何使用意图导航到MainActivity? 如果我完全理解你的要求......

而不是做

String num = getcont( MainActivity ,msg.getOriginatingAddress());

为什么不做这样的事情?

Intent ii=new Intent(MainActivity.this, newclass.class);
ii.putExtra("name", s);
startActivity(ii);