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
我不明白您的意思,先生。这就是我现在的代码。您调试/记录了吗?收到短信了吗?是的。收到短信后,会有一条吐司消息。我在您的代码中没有看到任何吐司。您注册了广播接收器吗?