I got sms code block when incoming sms will bring up a notification for incoming number in sqlite, but I flipped difficulties, if any incoming sms and the number is already in sqlite then it will not bring up the notification
public class SmsReceiver extends BroadcastReceiver {
public static int MSG_TPE = 0;
private String number;
@Override
public void onReceive(Context context, Intent intent) {
Conatclist ready = new Conatclist(context);
final String TAG = "Number";
String action = intent.getAction();
if (action.equals(AppConstants.SMS_RECEIVED_ACTION)) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String message = "";
String date = AppUtils.getDate();
String time = AppUtils.getTime();
String status = AppUtils.getStatus();
if (bundle != null) {
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]);
number = msgs[i].getOriginatingAddress();
message += msgs[i].getMessageBody().toString();
message += "\n";
}
if (SettingsPreferences.isBlockAllSms(context)) {
ArrayList<BlockItem> block_number = CMBDataProvider
.getBlackList(context);
if (!TextUtils.isEmpty(message)
&& !TextUtils.isEmpty(number)
&& block_number != null
&& block_number.size() > 0) {
message = message.trim();
//in exist in db
for (int i = 0; i < block_number.size(); i++) {
if (number.contains(block_number.get(i).getNumber())) {
//notification gcm incoming sms
if (SettingsPreferences.isNotificationShow(context)) {
AppUtils.generateNotification(
context, "Jualan: "+number , false);
}
break;
}
}
} else {
try {
if (ready.contactExists(context, number)) {
} else {
this.abortBroadcast();
CallMessageItem item = new CallMessageItem();
item.setDate(date);
item.setMessage(message);
item.setNumber(number);
item.setTime(time);
item.setStatus(status);
item.setType(AppConstants.TYPE_MESSAGE);
CMBDataProvider.addCallMessage(context, item);
if (SettingsPreferences.isNotificationShow(context)) {
AppUtils.generateNotification(
context, "SMS Block: " + number, false);
}
//String infosms ="msisdn="+number+"&message="+URLEncoder.encode(message);
new MyAsyncTask().execute(number, message);
this.abortBroadcast();
}
} catch (Exception e) {
}
}
}
}
}
}
//cek nomor
public class Conatclist extends AsyncTask<String, Void, Boolean> {
public Context context;
public Conatclist(Context context) {
// TODO Auto-generated constructor stub
this.context = context;
}
@Override
protected Boolean doInBackground(String... strings) {
try {
return contactExists(context, strings[0]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
// The argument result is return by method doInBackground
@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
// You can handle the result here
}
public boolean contactExists(Context context, String number) throws Exception {
Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
String[] mPhoneNumberProjection = { ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.NUMBER,
ContactsContract.PhoneLookup.DISPLAY_NAME };
Cursor cur = context.getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null, null);
try {
if (cur.moveToFirst()) {
// if contact are in contact list it will return true
return true;
}
} finally {
if (cur != null)
cur.close();
}
// if contact are not match that means contact are not added
return false;
}
}
}
Aucun commentaire:
Enregistrer un commentaire