Java 如何为android 6制作短信过滤应用程序
我为这次谈话道歉。 我正在使用谷歌翻译 我正在编写一个应用程序,显示带有特定数字的文本消息。 存储在应用程序用户界面中的数字 ***我的问题是,我的应用程序无法在Android 4.4及以上版本上运行 基本上我应该做什么?谢谢 我的分步计划: 传入短信:Java 如何为android 6制作短信过滤应用程序,java,android,Java,Android,我为这次谈话道歉。 我正在使用谷歌翻译 我正在编写一个应用程序,显示带有特定数字的文本消息。 存储在应用程序用户界面中的数字 ***我的问题是,我的应用程序无法在Android 4.4及以上版本上运行 基本上我应该做什么?谢谢 我的分步计划: 传入短信: public class IncomingSms extends BroadcastReceiver { SmsManager smsManager = SmsManager.getDefault(); @Override public v
public class IncomingSms extends BroadcastReceiver {
SmsManager smsManager = SmsManager.getDefault();
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentmessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentmessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentmessage.getDisplayMessageBody();
Log.i("payam", "senderNum=" + senderNum + " | msg=" + message);
DBAdapter db = new DBAdapter(context);
db.open();
List<sh_number> blocknumbers = db.getAllNUMBERItem();
db.close();
for (sh_number thisblocknumber : blocknumbers) {
if (senderNum.equals(thisblocknumber.getnumber())) {
Toast.makeText(context, "پیام دریافتی بلاک شد. ", Toast.LENGTH_LONG).show();
sh_msg thisMsg = new sh_msg();
thisMsg.setText(message);
thisMsg.setnumber(senderNum);
db.open();
db.insertSH_MSG(thisMsg);
db.close();
abortBroadcast();
}
/*if(senderNum.equals("5554")){
Toast.makeText(context, "پیام دریافتی بلاک شد. ", Toast.LENGTH_LONG).show();
sh_msg thisMsg = new sh_msg();
thisMsg.setText(message);
thisMsg.setnumber(senderNum);
db.open();
db.insertSH_MSG(thisMsg);
db.close();
abortBroadcast();
}else {
Toast.makeText(context, "senderNum="+senderNum+" | msg="+message,Toast.LENGTH_LONG).show();
}*/
}
}
}
}
public class IncomingSms扩展广播接收器{
SmsManager SmsManager=smsmsmanager.getDefault();
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
if(bundle!=null){
Object[]pdusObj=(Object[])bundle.get(“pdus”);
对于(int i=0;i
数字适配器:
public class NumberListAdapter extends ArrayAdapter<sh_number> {
List<sh_number> AllNumbers;
Context c;
public NumberListAdapter(Context c, List<sh_number> numbrs){
super(c, android.R.id.content, numbrs);
AllNumbers = numbrs;
this.c = c;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater v1 = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null) convertView = v1.inflate(R.layout.item_number, null);
TextView txt = (TextView)convertView.findViewById(R.id.Itm_name);
txt.setText(AllNumbers.get(position).getname());
txt = (TextView)convertView.findViewById(R.id.Itm_number);
txt.setText(AllNumbers.get(position).getnumber());
return convertView;
}
公共类NumberListAdapter扩展了ArrayAdapter{
列出所有数字;
上下文c;
public NumberListAdapter(上下文c,列表编号){
super(c,android.R.id.content,numbers);
所有数字=数字;
这个.c=c;
}
@非空
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater v1=(LayoutInflater)c.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
如果(convertView==null)convertView=v1.充气(R.layout.item_编号,null);
TextView txt=(TextView)convertView.findViewById(R.id.Itm_名称);
setText(AllNumbers.get(position.getname());
txt=(TextView)convertView.findViewById(R.id.Itm_编号);
setxt(AllNumbers.get(position.getnumber());
返回视图;
}
按摩师:
public class MsgListAdapter extends ArrayAdapter<sh_msg> {
List<sh_msg> AllNumbers;
Context c;
public MsgListAdapter(Context c, List<sh_msg> msgs){
super(c, android.R.id.content, msgs);
AllNumbers = msgs;
this.c = c;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater v1 = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null) convertView = v1.inflate(R.layout.item_msg, null);
TextView txt = (TextView)convertView.findViewById(R.id.Itm_name);
txt.setText(AllNumbers.get(position).getnumber());
txt = (TextView)convertView.findViewById(R.id.Itm_msg);
txt.setText(AllNumbers.get(position).getText());
txt = (TextView)convertView.findViewById(R.id.Itm_date);
txt.setText(AllNumbers.get(position).getDate());
return convertView;
}
公共类MsgListAdapter扩展了ArrayAdapter{
列出所有数字;
上下文c;
公共MsgListAdapter(上下文c,列表MSG){
超级(c,android.R.id.content,msgs);
AllNumbers=msgs;
这个.c=c;
}
@非空
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater v1=(LayoutInflater)c.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
如果(convertView==null)convertView=v1.充气(R.layout.item_msg,null);
TextView txt=(TextView)convertView.findViewById(R.id.Itm_名称);
setxt(AllNumbers.get(position.getnumber());
txt=(TextView)convertView.findViewById(R.id.Itm_msg);
setText(AllNumbers.get(position.getText());
txt=(TextView)convertView.findViewById(R.id.Itm_日期);
setText(AllNumbers.get(position.getDate());
返回视图;
}
数据库:
public class DBAdapter {
public static final String DATABASE_NAME = "smsblkrdb";
static final int DATABASE_VERSION = 1;
static final String CREATE_MSGTABLE = "CREATE TABLE msgsTable (\n" +
" id integer PRIMARY KEY AUTOINCREMENT NOT NULL,\n" +
" numberid integer(128),\n" +
"\"text\" text(128),\n" +
" date text(128)\n" +
");";
public static final String DATABASE_MSGTABLE = "msgsTable";
public static final String KEY_ID = "id";
public static final String KEY_NUMBERID = "numberid";
public static final String KEY_TEXT = "text";
public static final String KEY_DATE = "date";
static final String CREATE_NUMBERSTABLE = "CREATE TABLE numbersTable (\n" +
" id integer PRIMARY KEY AUTOINCREMENT NOT NULL,\n" +
" name text(128),\n" +
" number text(128)\n" +
");";
public static final String DATABASE_NUMBERSTABLE = "numbersTable";
public static final String KEY_NAME = "name";
public static final String KEY_NUMBER = "number";
public static final String TAG = "EsfanduneLrn";
DatabaseHelper DBHelper;
final Context context;
SQLiteDatabase db;
String yek_Msgnam[] = {
KEY_ID, KEY_NUMBERID, KEY_TEXT, KEY_DATE
};
String yek_Numbernam[] = {
KEY_ID, KEY_NAME, KEY_NUMBER
};
public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_MSGTABLE);
db.execSQL(CREATE_NUMBERSTABLE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_MSGTABLE);
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_NUMBERSTABLE);
onCreate(db);
}
}
//---opens the database---
public DBAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close() {
DBHelper.close();
}
//---insert a contact into the database---
public long insertSH_MSG(sh_msg thisMsg) {
ContentValues initialValues = new ContentValues();
// initialValues.put(KEY_ID, Integer.valueOf(thisMsg.getId()));
initialValues.put(KEY_NUMBERID, thisMsg.getnumber());
initialValues.put(KEY_TEXT, thisMsg.getText());
initialValues.put(KEY_DATE, thisMsg.getDate());
return db.insert(DATABASE_MSGTABLE, null, initialValues);
}
public long insertSH_NUMBER(sh_number thisNumbr) {
ContentValues initialValues = new ContentValues();
// initialValues.put(KEY_ID, Integer.valueOf(thisNumbr.getId()));
initialValues.put(KEY_NUMBER, thisNumbr.getnumber());
initialValues.put(KEY_NAME, thisNumbr.getname());
return db.insert(DATABASE_NUMBERSTABLE, null, initialValues);
}
//---retrieves all the contacts---
public List<sh_msg> getAllMSGItem() {
Cursor cursor = db.query(DATABASE_MSGTABLE, yek_Msgnam, null, null, null, null, null);
List<sh_msg> nams = cursorToList_SHMSG(cursor);
cursor.close();
return nams;
}
private List<sh_msg> cursorToList_SHMSG(Cursor cursor) {
List<sh_msg> nams = new ArrayList<sh_msg>();
if (cursor.getCount() > 0) {
while (cursor.moveToNext()) {
sh_msg nam = new sh_msg();
nam.setId(cursor.getInt(cursor.getColumnIndex(KEY_ID)));
nam.setDate(cursor.getString(cursor.getColumnIndex(KEY_DATE)));
nam.setnumber(cursor.getString(cursor.getColumnIndex(KEY_NUMBERID)));
nam.setText(cursor.getString(cursor.getColumnIndex(KEY_TEXT)));
// nam.set(cursor.getString(cursor.getColumnIndex(KEY_)));
nams.add(nam);
}
;
}
cursor.close();
return nams;
}
public List<sh_number> getAllNUMBERItem() {
Cursor cursor = db.query(DATABASE_NUMBERSTABLE, yek_Numbernam, null, null, null, null, null);
List<sh_number> nams = cursorToList_SHNUMBER(cursor);
cursor.close();
return nams;
}
private List<sh_number> cursorToList_SHNUMBER(Cursor cursor) {
List<sh_number> nams = new ArrayList<sh_number>();
if (cursor.getCount() > 0) {
while (cursor.moveToNext()) {
sh_number nam = new sh_number();
nam.setId(cursor.getInt(cursor.getColumnIndex(KEY_ID)));
nam.setname(cursor.getString(cursor.getColumnIndex(KEY_NAME)));
nam.setnumber(cursor.getString(cursor.getColumnIndex(KEY_NUMBER)));
// nam.set(cursor.getString(cursor.getColumnIndex(KEY_)));
nams.add(nam);
}
;
}
cursor.close();
return nams;
}
public void removeNumber(int numberId) {
db.delete(DATABASE_NUMBERSTABLE, KEY_ID +" == "+numberId,null);
}
公共类DBAdapter{
公共静态最终字符串数据库\u NAME=“smsblkrdb”;
静态最终int数据库_版本=1;
静态最终字符串CREATE\u MSGTABLE=“CREATE TABLE msgsTable(\n”+
id整数主键自动递增不为空,\n+
numberid整数(128),\n+
“文本”文本(128),\n+
“日期文本(128)\n”+
");";
公共静态最终字符串数据库_MSGTABLE=“msgsTable”;
公共静态最终字符串键\u ID=“ID”;
公共静态最终字符串键\u NUMBERID=“NUMBERID”;
公共静态最终字符串键\u TEXT=“TEXT”;
公共静态最终字符串键\u DATE=“DATE”;
静态最终字符串CREATE\u NUMBERSTABLE=“CREATE TABLE NUMBERSTABLE(\n”+
id整数主键自动递增不为空,\n+
名称文本(128),\n+
“数字文本(128)\n”+
");";
公共静态最终字符串数据库\u NUMBERSTABLE=“NUMBERSTABLE”;
公共静态最终字符串键\u NAME=“NAME”;
公共静态最终字符串键\u NUMBER=“NUMBER”;
公共静态最终字符串TAG=“esfandanelrn”;
数据库助手DBHelper;
最终语境;
sqlitedb数据库;
字符串yek_Msgnam[]={
密钥ID、密钥编号ID、密钥文本、密钥日期
};
字符串yek_numberName[]={
密钥ID、密钥名称、密钥编号
};
公共DBAdapter(上下文ctx){
this.context=ctx;
DBHelper=新数据库助手(上下文);
}
私有静态类DatabaseHelper扩展了SQLiteOpenHelper{
DatabaseHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
试一试{
db.execSQL(创建_MSGTABLE);
db.execSQL(创建\u NUMBERSTABLE);
}捕获(SQLE异常){
e、 printStackTrace();
}
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion