今天热门
热点:

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


回调函数 Java 原谅我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);

}

解决方案

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

引用
Quote: 引用

debug,执行到那了吗?有时没出来效果并不代表没执行。
执行了!!!但是它执行了六次。。这是为啥?


那你就要全面看你代码逻辑了。好好检查一下

www.zrccd.nettrue/topics/20180204/188767.htmlTechArticle在重载方法onchange中,position.getPosition(bodystr);为什么没有执行,bodyonchange 回调函数 Java 原谅我Java学的烂。。。。 //smsprocess.java packagecom.example.shengchuangnew; importjava.util.regex.Matcher; importj...

相关文章

    暂无相关文章

用户评论

大家都在看