我刚刚构建了一个广播接收器,通过它可以接收传入的文本消息,而不是在有空间时将文本消息拆分并将其保存到中String[]
。
现在,我需要检查String[]
数据库中是否有此内容。为此,我创建了一个ArrayList<String>
,它从对应的列中获取所有条目。现在,我需要从短信中检查字符串中的String ArrayList
是否相同String[]
,但是我不知道该如何实现。
是否有一种简便快捷的检查方法,我还需要知道两者中都包含哪个String吗?
SmileySmsReceiver:
package de.retowaelchli.filterit.services;
import java.util.ArrayList;
import de.retowaelchli.filterit.database.SFilterDBAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
public class SmileySmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
//Datenbank definieren
SFilterDBAdapter mDbHelper = new SFilterDBAdapter(context);
//---get the SMS message passed in---
Log.d("SmileySmsReceiver", "Yes it calls the onReceive");
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
Log.d("SmileySmsReceiver", "Bundle is not null");
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
Log.d("SmileySmsReceiver","Was steht in der Nachricht?: " + str);
String[] splited = str.split("\\s+");
//Hier werden die Strings der Smileys aus der Datenbank gezogen
mDbHelper.open();
Cursor c = mDbHelper.getAllSFilter();
ArrayList<String> SmileyList = new ArrayList<String>();
c.getColumnIndex(SFilterDBAdapter.KEYWORD);
int ColumnIndex = c.getColumnIndex(SFilterDBAdapter.KEYWORD);
if(c!=null)
{
//Hier werden die Smileys in die ArrayList geschrieben
while(c.moveToNext()){
String infoItem = c.getString( ColumnIndex );
SmileyList.add(infoItem);
}
<------------------------- FROM HERE ON I NEED YOUR GUYS HELP ------------------------------->
}
}
//---display the new SMS message---
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
}
}
}
如果有String myString
和ArrayList<String> myListOfStrings
,则可以检查是否myString
在列表中,如下所示:
myListOfStrings.contains( myString );
这将返回一个布尔值(true / false)-如果找到了字符串则为true,否则为false。
在您的情况下,您需要遍历字符串数组,并将每个字符串匹配SmileyList
如下:
for( String s : splitted ) {
if( SmileyList.contains( s ) ) {
//Do what you need to do if the string is in the SmileyList.
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句