人。我正在制作一个广播接收器到android上的“黑名单”联系人。所以我有两种形式将联系人添加到黑名单。其中一个是手动将它们添加到sqlite数据库,另一个是从联系人应用程序添加它们。当我从黑名单中的号码收到短信文本时,我的应用程序应该捕获该事件并发送消息作为响应。当我试图验证黑名单上的号码时,我遇到了问题。我正在获取数字并使用带有选择的光标来验证联系人的存在。当光标检查手动添加的数字时我没有遇到任何问题但是当从联系人应用程序添加联系人时,光标返回0行。请注意,我会说西班牙语,所以有些单词是西班牙语。
public class RecibirMensaje extends BroadcastReceiver{
static final String ACTION="android.provider.Telephony.SMS_RECEIVED";
SmsMessage message;
String dbName="DBRespuestas";
String tableRegistro="registro";
SQLiteDatabase db;
EditText nombre,telefono,mensaje;
Context context;
@Override
public void onReceive(Context context, Intent intent){
db=context.openOrCreateDatabase(dbName,Context.MODE_PRIVATE,null);
this.context=context;
if (intent.getAction().equals(RecibirMensaje.ACTION)){
StringBuilder stringBuilder=new StringBuilder();
String textMessage;
Bundle bundle=intent.getExtras();
if (bundle!=null){
Object[]pdus=(Object[])bundle.get("pdus");
for (Object pdu:pdus){
message= SmsMessage.createFromPdu((byte[]) pdu);
}
}
Toast.makeText(context,message.getDisplayOriginatingAddress().toString(),Toast.LENGTH_LONG).show();
if (isBlacklisted(message.getDisplayOriginatingAddress())){
}
}
}
private boolean isBlacklisted(String phone) {
db=context.openOrCreateDatabase(dbName,Context.MODE_PRIVATE,null);
Cursor cursor=db.rawQuery("Select nombre, telefono from registro where telefono='"+phone+"'",null);
cursor.moveToFirst();
if (cursor.getCount()>=0){
Toast.makeText(context,Integer.toString(cursor.getCount()),Toast.LENGTH_LONG).show();
return true;
}else {
Toast.makeText(context,"Cursor vacio",Toast.LENGTH_LONG).show();
return false;
}
}
}
我检查传递的数据是否正确而没有运气,也检查数据库中的数据。任何帮助都是相关的。提前谢谢。