Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为android 6制作短信过滤应用程序_Java_Android - Fatal编程技术网

Java 如何为android 6制作短信过滤应用程序

Java 如何为android 6制作短信过滤应用程序,java,android,Java,Android,我为这次谈话道歉。 我正在使用谷歌翻译 我正在编写一个应用程序,显示带有特定数字的文本消息。 存储在应用程序用户界面中的数字 ***我的问题是,我的应用程序无法在Android 4.4及以上版本上运行 基本上我应该做什么?谢谢 我的分步计划: 传入短信: public class IncomingSms extends BroadcastReceiver { SmsManager smsManager = SmsManager.getDefault(); @Override public v

我为这次谈话道歉。 我正在使用谷歌翻译

我正在编写一个应用程序,显示带有特定数字的文本消息。 存储在应用程序用户界面中的数字

***我的问题是,我的应用程序无法在Android 4.4及以上版本上运行

基本上我应该做什么?谢谢

我的分步计划:

传入短信:

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