android读中文短信实现垃圾短信过滤问题
楼主是这样做的,先获取短信内容,保存在test short message.txt下public void onReceive(Context context, Intent intent) {
////将进来的短信保存在文件中
//System.out.println(TelephoneDemo.start);
int block=0;
if(TelephoneDemo.start==true)
{
//Intent intent1=getIntent();
String name =new String("");
if (intent != null && intent.getAction() != null
&& ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
/*获取短信*/ Object[] pduArray = (Object[]) intent.getExtras().get("pdus");
StringBuilder sb = new StringBuilder();
SmsMessage[] messages = new SmsMessage[pduArray.length];
/*打印输出函数(系统后台接受)*/for (int i = 0; i < pduArray.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pduArray[i]);
// 打印消息
String mess=messages[i].getDisplayMessageBody();
name=name.concat(mess);
//获取短信号码
for (SmsMessage currentMessage : messages)
{
sb.append("短信来源:");
// 获得接收短信的电话号码
sb.append(currentMessage.getDisplayOriginatingAddress());
sb.append("\n------短信内容------\n");
// 获得短信的内容
sb.append(currentMessage.getDisplayMessageBody());
sb.append("\n");
}
}
String mess="\r\n";
String SDPATH;
String FILESPATH;
SDPATH = Environment.getExternalStorageDirectory().getPath() + "//";
// FILESPATH = this.context.getFilesDir().getPath() + "//";
String fileName="test short message.txt";
FILESPATH=SDPATH+"/"+fileName;
name=name.concat(mess);
writeFileSdcard(FILESPATH,name);//保存短信内容,以便做判断
下面继续读sdcard中dic2.txt(垃圾字典中的词),然后看短信中有无出现垃圾的词,如有将block变量改为1
int length=0;
int minlength=1000,minnumebr = 0;
float averagelength;
fileName="test short message.txt";
FILESPATH=SDPATH+"/"+fileName;
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FILESPATH)));
fileName="vertics";
FILESPATH=SDPATH+"/"+fileName;
DataOutputStream fr2 = new DataOutputStream(new FileOutputStream(FILESPATH));
fileName="dic2.txt";
FILESPATH=SDPATH+"/"+fileName;
BufferedReader br3 = new BufferedReader(new InputStreamReader(new FileInputStream(FILESPATH)));
int number=0;
int begin=0;
int sum=327;//词总个数
int total=sum+3;//默认维
int duanmax=1000;
double [][]result=new double[duanmax][total+1];
String []biaodian={"1","2","3","4","5","6","7","8","9","0"," ","?",":","《","》","*","~","%","`","【","】","了","的","-","#","'"};
String []s=new String[sum];
String duanxin=null;
for(int j=0;j<duanmax;j++)
for(int i=0;i<total;i++)
{
result[j][i]=0;
}
s[number]=br3.readLine();//将字典读入内存
for(int number1=1;number1<sum;number1++)
{
s[number1]=br3.readLine(); }
int duanxincount=0;
duanxin=br.readLine();
while( duanxin!=null)
{
if(duanxin.length()<=35)
result[duanxincount][total-1]=1.0;
result[duanxincount][total-2]=0.3;
length+=duanxin.length();
for(int j=0;j<biaodian.length;j++)
{
duanxin=duanxin.replace(biaodian[j], "");
}
System.out.println(duanxin);
for(int n=0;n<duanxin.length();n++)
{int at=0;
begin=n;
int l=0;
int count=0;
//System.out.println("l:"+l+"n: "+ n);
while(l<sum&&begin<duanxin.length()&&duanxin.charAt(begin)!=s[l].charAt(at))
{ l++;
}
while(begin<duanxin.length()&&l<sum&&at<s[l].length()&&duanxin.charAt(begin)==s[l].charAt(at))
{
//System.out.println(duanxin.charAt(begin));
// System.out.println(duanxin.charAt(begin));
at++;
begin++;
count++;
//System.out.println(at);
//System.out.println(l);
if(begin<duanxin.length()&&l<sum-1&&at<s[l].length()&&duanxin.charAt(begin)!=s[l].charAt(at)&&duanxin.charAt(begin-count)==s[l+1].charAt(at-count))
{
//System.out.println("enter");
l++;
at-=count;
begin-=count;
// System.out.println(begin);
//System.out.println(duanxin.charAt(begin));
count=0;
// System.out.println(at);
//System.out.println(begin);
}
}
if(l<sum&&at==s[l].length())
{
result[duanxincount][l]=1;
//System.out.println(s[l]);
n=n+s[1].length()-1;
block=1;
}
}
result[duanxincount][total-1]=0.3;
duanxin=br.readLine();
duanxincount++;
}
上面是部分代码,在java上运行正常,词都能分出来,但转到android上只能分出来“www”,“http”等英文,中文词都
找不到,哪位高手帮忙看看,网上讲是对中文编码的问题,小弟不懂,还望各位大虾指教!!!
在此跪谢!!!
补充:移动开发 , Android