在重载方法onchange中,position.getPosition(bodystr);为什么没有执行

Android 码拜 8年前 (2016-06-09) 1277次浏览
原谅本人Java学的烂。
//smsprocess.java
package com.example.shengchuangnew;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
public class SmsProcess{
private Uri SMS_INBOX = Uri.parse(“content://sms/”);
private Context context;
private Position position;
public String bodystr;
public SmsProcess(Context context,Position position)
{
this.context = context;
this.position = position;
}
public Handler smsHandler;
private void getSmsFromPhone(String str) {
ContentResolver cr =context.getContentResolver();
//   String[] projection = new String[] { “address” };//”_id”, “address”, “person”,, “date”, “type
String where = “address = “+str+” AND date >”
+ (System.currentTimeMillis() – 10 * 60 * 1000);
Cursor cur = cr.query(SMS_INBOX, null, where, null, “date desc”);
if (null == cur)
return;
if (cur.moveToNext()) {
String number = cur.getString(cur.getColumnIndex(“address”));//手机号
String name = cur.getString(cur.getColumnIndex(“person”));//联系人姓名列表
String body = cur.getString(cur.getColumnIndex(“body”));
//这里本人是要获取本人短信服务号码中的验证码~~

// Pattern pattern = Pattern.compile(“[0-9]”);
// Matcher matcher = pattern.matcher(body);
//if (matcher.find()) {
//   String res = matcher.group(0);
//  Toast.makeText(getApplicationContext(),body+res,Toast.LENGTH_SHORT).show();
// }
bodystr = body;
cur.close();
Toast.makeText(context.getApplicationContext(),”sms”+bodystr,Toast.LENGTH_SHORT).show();

}

}

public void getSmsFromNum(String str)
{
smsHandler = new Handler();

SmsObserver smsObserver= new SmsObserver(context, smsHandler);
smsObserver.InitNumber(str);

context.getContentResolver().registerContentObserver(SMS_INBOX, true,smsObserver);

}

class SmsObserver extends ContentObserver {
private String str;

public SmsObserver(Context context, Handler handler) {
super(handler);
}
public void InitNumber(String str)
{
this.str = str;
}
  @Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
//每当有新短信到来时,使用我们获取短消息的方法
getSmsFromPhone(str);
position.getPosition(bodystr);
}

}

}
//positon.java
package com.example.shengchuangnew;
import android.content.Context;
import android.widget.Toast;
public class Position implements PostionImplements {
private Context context;
private String extra;
public String position;
public Position(Context context,String extra){
this.context = context;
this.extra = extra;
get();
}
private void get(){
SmsProcess smsprocess = new SmsProcess(context,this);
smsprocess.getSmsFromNum(extra);
}
@Override
public void getPosition(String str) {
// TODO Auto-generated method stub
position = str;
Toast.makeText(context.getApplicationContext(),”message”+ position, Toast.LENGTH_LONG).show();
}

}
//positionimplements.java
package com.example.shengchuangnew;
public interface PostionImplements {
public void getPosition(String str);
}

解决方案

30

debug,执行到那了吗?有时没出来效果并不代表没执行。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在重载方法onchange中,position.getPosition(bodystr);为什么没有执行
喜欢 (0)
[1034331897@qq.com]
分享 (0)