Android SMS未在listview中显示

Android SMS未在listview中显示,android,android-listview,sms,message,Android,Android Listview,Sms,Message,在我的申请中,我将收到短信。我的代码正在运行,没有崩溃。但是这些消息不会显示在我的应用程序收件箱列表视图中。我不希望消息存储在我的应用程序中 收件箱 public class InboxQuick extends Activity implements OnClickListener, OnItemClickListener{ private ListView smsListView; private BaseAdapter smsAdapter; private ArrayList

在我的申请中,我将收到短信。我的代码正在运行,没有崩溃。但是这些消息不会显示在我的应用程序收件箱列表视图中。我不希望消息存储在我的应用程序中

收件箱

  public class InboxQuick extends Activity  implements OnClickListener,
  OnItemClickListener{

private ListView smsListView;
private BaseAdapter smsAdapter;
private ArrayList<String> msgList = new ArrayList<String>();
private boolean isAdHocQuestions;
// received msgs
public static Map<String, String> smsCache = new HashMap<String, String>();
public static int type;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inboxquick);

    Button summary = (Button) findViewById(R.id.btnsummaryquick);
    summary.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = new Intent("sg.edu.tp.iit.mns.SummaryQuick");
            intent.putExtra("showQuestion", true);
            startActivity(intent);
        }
    });

    isAdHocQuestions = getIntent().getBooleanExtra("type", false);

    smsListView = (ListView) findViewById(R.id.msgList);

    // buildSmsList();
    smsAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, msgList);
    smsListView.setAdapter(smsAdapter);
    smsListView.setOnItemClickListener(this);
}

private void unRegistSmsReceiver() {
    unregisterReceiver(inboxSmsReveiver);
}

private BroadcastReceiver inboxSmsReveiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.provider.Telephony.SMS_RECEIVED".equals(intent
                .getAction())) {
            Object[] pdus = (Object[]) intent.getExtras().get("pdus");
            for (int i = 0; i < pdus.length; i++) {
                SmsMessage message = SmsMessage
                        .createFromPdu((byte[]) pdus[i]);
                String body = message.getDisplayMessageBody();
                if (body.length() != 0 && body.startsWith("##")) {
                    body = body.replaceAll("\n", "");
                    String[] answerBody = body.split("##");
                    if (answerBody.length == 3) {
                        String answer = answerBody[1];
                        String fromName = answerBody[2];
                        // if msg is send by same student (by name) then msg
                        // will not be counted
                        if (!smsCache.containsKey(fromName)) {

                            // save txt msg
                            type = "ABCD".indexOf(answer) == -1 ? 1 : 2;
                            String saveBody = answer;
                            saveNewSms(fromName, saveBody);

                            // msg display
                            String showBody = "name=" + fromName
                                    + ",answer=" + answer;
                            updateSmsList(showBody);

                        }
                    } else {
                        // TODO error msg
                    }
                } else {
                    continue;
                }
            }
        }
    }
};

private void saveNewSms(String key, String body) {
    smsCache.put(key, body);
}

private void updateSmsList(String body) {
    TextView title = (TextView) findViewById(R.id.tv);
    title.setText("Inbox(" + smsCache.size() + ")");
    msgList.add(body);
    smsAdapter.notifyDataSetChanged();
}

@Override
protected void onPause() {
    super.onPause();
    if (isAdHocQuestions)
        unRegistSmsReceiver();
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

}
公共类InboxQuick扩展活动实现OnClickListener,
麦克利克监听器{
私有列表视图smsListView;
专用基站适配器smsAdapter;
private ArrayList msgList=new ArrayList();
私有布尔Isadhock问题;
//收到的MSG
公共静态映射smsCache=newhashmap();
公共静态int类型;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.inboxquick);
按钮摘要=(按钮)findViewById(R.id.btnsummaryquick);
summary.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
意向意向=新意向(“sg.edu.tp.iit.mns.SummaryQuick”);
intent.putExtra(“showQuestion”,true);
星触觉(意向);
}
});
isAdHocQuestions=getIntent().getBooleanExtra(“type”,false);
smsListView=(ListView)findViewById(R.id.msgList);
//buildSmsList();
smsAdapter=新阵列适配器(此,
android.R.layout.simple_list_item_1,msgList);
设置适配器(smsAdapter);
smsListView.setOnItemClickListener(此);
}
私有void unRegistSmsReceiver(){
未注册的接收人(InboxSMsrevever);
}
private BroadcastReceiver Inboxsmssrevever=新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
如果(“android.provider.Telephony.SMS_RECEIVED.”等于(意图
.getAction()){
Object[]pdus=(Object[])intent.getExtras().get(“pdus”);
对于(int i=0;i
短信接收器

    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 );

        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         
            putSmsToDatabase( sms );
        }

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor edit = prefs.edit();
        edit.putBoolean("need_update", true);
        edit.commit();

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

    }

}

private void putSmsToDatabase( SmsMessage sms )
{
    // Create SMS row
    ContentValues values = new ContentValues();
    values.put( ADDRESS, sms.getOriginatingAddress() );
    values.put( READ, MESSAGE_IS_NOT_READ );
    values.put( SEEN, MESSAGE_IS_NOT_SEEN );
}
public void onReceive(上下文、意图)
{
//从Intent获取SMS映射
Bundle extras=intent.getExtras();
字符串消息=”;
如果(附加值!=null)
{
//获取接收到的SMS阵列
Object[]smsExtra=(Object[])extras.get(SMS\u EXTRA\u NAME);
对于(int i=0;i
我不明白您的意思,先生。这就是我现在的代码。您调试/记录了吗?收到短信了吗?是的。收到短信后,会有一条吐司消息。我在您的代码中没有看到任何吐司。您注册了广播接收器吗?