1

受信トレイからいくつかのメッセージを非表示にしようとしていますが、それが新しいデータベースに配置されます.... SmsFilter.javaとしての私のコードは次のとおりです

public class SmsFilter extends BroadcastReceiver{

SQLiteDatabase mydb,messagedb;
String number;
ArrayList<String> private_num = new ArrayList<String>();

@Override
public void onReceive(Context context, Intent intent) {

//private named database contains numbers those which i wish to hide

    mydb=context.openOrCreateDatabase("private", 0,null);
    mydb.execSQL("CREATE TABLE IF NOT EXISTS tab1(num INT(13))");


    Cursor  cur=mydb.rawQuery("select * from tab1", null);
    while(cur.moveToNext())
    {
        number=cur.getString(cur.getColumnIndex("num"));

        private_num.add(number);
    }

    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
        Bundle extras = intent.getExtras();

        if (extras != null) {

            Object[] pdus = (Object[])extras.get("pdus");

            if (pdus.length < 1) return;

            StringBuilder sb = new StringBuilder();
            String sender = null;

            for (int i = 0; i < pdus.length; i++) {

                SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);

                if (sender == null) sender = message.getOriginatingAddress();

                String text = message.getMessageBody();
                if (text != null) sb.append(text);

            }
            for(int i=0;i<private_num.size();i++)
            {
                if (sender.equals(private_num.get(i))) {

             // create a new database and insert messages

                    messagedb=context.openOrCreateDatabase("message",0, null);
                    messagedb.execSQL("CREATE TABLE IF NOT EXISTS tab2(sender INT(13),body varchar)");
                    mydb.execSQL("INSERT INTO tab2 VALUES('"+sender+"','"+sb+"')");

                    abortBroadcast();
                }

            }

        }
    }

}}

次のようにも現れます

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

<receiver android:name=".SmsFilter">

            <intent-filter android:priority="1">

                <action android:name="android.provider.Telephony.SMS_RECEIVED" />

            </intent-filter>

    </receiver>

しかし、私はこの受信機でメッセージを隠すことができません....理由は何ですか?...誰か助けてください...私は困っています....

4

2 に答える 2

0

優先度を可能な限り高い整数に上げます。その"intent-filterandroid:priority =" 2 ^ 32-1 "

于 2012-06-30T14:32:56.113 に答える
0

コードを変更してください:

<receiver android:name=".SmsFilter">

        <intent-filter android:priority="100">

            <action android:name="android.provider.Telephony.SMS_RECEIVED" />

        </intent-filter>

</receiver>
于 2015-03-15T10:32:39.640 に答える