Board logo

標題: MySMSReceiver [打印本頁]

作者: ray    時間: 2012-11-28 18:59     標題: MySMSReceiver

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:orientation="vertical"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent" >

  6.     <Spinner
  7.         android:id="@+id/Spinner01"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="wrap_content"
  10.         />
  11.          <ListView
  12.         android:id="@+id/ListView01"
  13.         android:layout_width="fill_parent"
  14.         android:layout_height="wrap_content"
  15.         />
  16. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-28 19:06

  1. package com.example.mysmsreceiver;

  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;

  5. public class MySMSReceiver extends BroadcastReceiver {
  6.     public MySMSReceiver() {
  7.     }

  8.     @Override
  9.     public void onReceive(Context context, Intent intent) {
  10.         // TODO: This method is called when the BroadcastReceiver is receiving
  11.         // an Intent broadcast.
  12.         throw new UnsupportedOperationException("Not yet implemented");
  13.     }
  14. }
複製代碼

作者: ray    時間: 2012-11-28 19:10

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2.     package="com.example.mysmsreceiver"
  3.     android:versionCode="1"
  4.     android:versionName="1.0" >

  5.     <uses-sdk
  6.         android:minSdkVersion="8"
  7.         android:targetSdkVersion="15" />

  8.     <application
  9.         android:icon="@drawable/ic_launcher"
  10.         android:label="@string/app_name"
  11.         android:theme="@style/AppTheme" >
  12.         <activity
  13.             android:name=".MainActivity"
  14.             android:label="@string/title_activity_main" >
  15.             <intent-filter>
  16.                 <action android:name="android.intent.action.MAIN" />

  17.                 <category android:name="android.intent.category.LAUNCHER" />
  18.             </intent-filter>
  19.         </activity>

  20.         <receiver
  21.             android:name=".MySMSReceiver">
  22.              <intent-filter android:priority="100">
  23.                 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  24.             </intent-filter>
  25.         </receiver>
  26.     </application>

  27. </manifest>
複製代碼

作者: ray    時間: 2012-11-28 19:13

  1. <uses-permission android:name="android.permission.RECEIVE_SMS"/>
複製代碼

作者: ray    時間: 2012-11-28 19:26

  1. private static final String DATABASE_NAME = "SMSDB";
  2.         private static final int DATABASE_VERSION = 1;
複製代碼

作者: ray    時間: 2012-11-28 19:44

  1. try
  2.                 {
  3.                         String sql = "create table smstb(mobile text not null,message text not null)";
  4.                         db.execSQL(sql);
  5.                 }
  6.                 catch(Exception e)
  7.                 {
  8.                        
  9.                 }
複製代碼

作者: ray    時間: 2012-11-28 19:48

  1. if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
  2.         {
  3.                
  4.         }
複製代碼

作者: ray    時間: 2012-11-28 19:56

  1. Object[] pdus = (Object[])intent.getExtras().get("pdus");
複製代碼

作者: ray    時間: 2012-11-28 20:01

  1. SmsMessage[] message = new SmsMessage[pdus.length];
複製代碼

作者: ray    時間: 2012-11-28 20:09

  1. for(int i=0;i<pdus.length;i++)
  2.                 {
  3.                         message[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
  4.                         String mobile = message[i].getDisplayOriginatingAddress();
  5.                         String msg = message[i].getDisplayMessageBody();
  6.                 }
複製代碼

作者: ray    時間: 2012-11-28 20:14

  1. SMSDB myDB = new SMSDB(context);
  2.                         final SQLiteDatabase db = myDB.getWritableDatabase();
  3.                         String sql = "insert into smstb values('"+mobile+"','"+msg+"');";
  4.                         db.execSQL(sql);
複製代碼

作者: ray    時間: 2012-11-28 20:18

  1. String show = "";
  2.                                 show += "接收来自:" + mobile;
  3.                                 show += "的簡訊内容如下:\n"+msg;
  4.                                 Toast.makeText(context, show, Toast.LENGTH_LONG).show();
複製代碼

作者: ray    時間: 2012-11-28 21:19

  1. package com.example.mysmsreceiver;

  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.view.Menu;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.ArrayAdapter;
  10. import android.widget.ListView;
  11. import android.widget.Spinner;
  12. import android.widget.TextView;
  13. import android.widget.AdapterView.OnItemSelectedListener;

  14. public class MainActivity extends Activity {
  15.         private SMSDB helper;
  16.     @Override
  17.     public void onCreate(Bundle savedInstanceState)
  18.     {
  19.         super.onCreate(savedInstanceState);
  20.         setContentView(R.layout.activity_main);
  21.         helper = new SMSDB(this);
  22.         final SQLiteDatabase db = helper.getReadableDatabase();
  23.         Cursor c = db.query ("smstb", new String[]{"mobile"}, null, null, "mobile", null, null);
  24.         c.moveToFirst();
  25.         CharSequence[] list = new CharSequence[c.getCount()];
  26.         for(int i = 0; i < list.length; i++)
  27.         {
  28.                 list[i] = c.getString(0);
  29.                 c.moveToNext();
  30.         }
  31.         c.close();
  32.         Spinner spinner = (Spinner)this.findViewById(R.id.Spinner01);
  33.         spinner.setAdapter(new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,list));
  34.         spinner.setOnItemSelectedListener(new OnItemSelectedListener()
  35.         {

  36.                         public void onItemSelected(AdapterView<?> parent, View view,
  37.                                         int position, long id) {
  38.                                 // TODO Auto-generated method stub
  39.                                 String mobile = ((Spinner)parent).getSelectedItem().toString();
  40.                                
  41.                                 Cursor c = db.query("smstb", new String[]{"message"}, "mobile='"+mobile+"'", null, null, null, null);
  42.                                 c.moveToFirst();
  43.                                 CharSequence[] list = new CharSequence[c.getCount()];
  44.                         for(int i = 0; i < list.length; i++)
  45.                         {
  46.                                 list[i] = c.getString(0);
  47.                                 c.moveToNext();
  48.                         }
  49.                         c.close();
  50.                         ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(MainActivity.this,android.R.layout.simple_list_item_1,list);
  51.                         ListView listView = (ListView)findViewById(R.id.ListView01);
  52.                         listView.setAdapter(adapter);
  53.                         }

  54.                         public void onNothingSelected(AdapterView<?> arg0) {
  55.                                 // TODO Auto-generated method stub
  56.                                
  57.                         }
  58.                
  59.         });

  60.     }

  61.     @Override
  62.     public boolean onCreateOptionsMenu(Menu menu) {
  63.         getMenuInflater().inflate(R.menu.activity_main, menu);
  64.         return true;
  65.     }
  66. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2