如何通过onReceive方法将我的短信存储在sqlite数据库中

时间:2014-03-25 09:10:47

标签: android

我正在开发一个Android应用程序,其中无法将我的短信存储到sqlite数据库中 使用onReceive方法所以请帮我解决代码片段

public void onReceive(Context context,Intent intent)     {         //从Intent获取SMS地图         Bundle extras = intent.getExtras();

    String messages = "";

    if ( extras != null )
    {
        // Get received SMS array
        Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );

        // Get ContentResolver object for pushing encrypted SMS to incoming folder
        ContentResolver contentResolver = context.getContentResolver();

        for ( int i = 0; i < smsExtra.length; ++i )
        {
            SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

            String body = sms.getMessageBody().toString();
            String address = sms.getOriginatingAddress();

            messages += "SMS from " + address + " :\n";                    
            messages += body + "\n";

            // Here you can add any your code to work with incoming SMS
            // I added encrypting of all received SMS 

            putSmsToDatabase( contentResolver, sms );
        }

        // Display SMS message
        Toast.makeText( context, messages, Toast.LENGTH_SHORT ).show();
    }

    // WARNING!!! 
    // If you uncomment next line then received SMS will not be put to incoming.
    // Be careful!
    this.abortBroadcast(); 
}

private void putSmsToDatabase( ContentResolver contentResolver, SmsMessage sms )
{
    // Create SMS row
    ContentValues values = new ContentValues();
    values.put( ADDRESS, sms.getOriginatingAddress() );
    values.put( DATE, sms.getTimestampMillis() );
    values.put( READ, MESSAGE_IS_NOT_READ );
    values.put( STATUS, sms.getStatus() );
    values.put( TYPE, MESSAGE_TYPE_INBOX );
    values.put( SEEN, MESSAGE_IS_NOT_SEEN );
    try
    {
        String encryptedPassword= sms.getMessageBody().toString();
        //String encryptedPassword = StringCryptor.encrypt( new String(PASSWORD), sms.getMessageBody().toString() ); 
        values.put( BODY, encryptedPassword );
    }
    catch ( Exception e ) 
    { 
        e.printStackTrace(); 
    }

    // Push row into the SMS table
    contentResolver.insert( Uri.parse( SMS_URI ), values );
}

0 个答案:

没有答案