編輯:關於Android編程
在前面兩個章節中我們已經完成了群發助手的讀聯系人,存取數據庫;使用
SimpleCursorAdapter綁定數據庫與ListView;實現listview的全選與全不選;
也把需要撥打電話號碼的id以list集合的形式通過Intent傳送到了第三個界面
今天我們就來完成第三個界面的開發,工作如下:
1)完成第三個Activity的布局
2)解析第二個Activity通過Intent傳送過來的List集合
3)讀取數據表中的festival表中的節日祝福語,顯示到界面上
4)完成切換祝福語的功能
5)完成發送統一祝福語的功能
6)完成發送不同祝福語的功能
7)使用具有列表和帶確定按鈕的AlertDialog
8)使用SmsManager完成短信的發送
代碼如下:
直接用list存儲即可,增強for循環可以去掉,只是用來確認傳過來的集合是否有數據,
從而避免空指針問題的出現
Intent it = getIntent(); final Listlist = it.getIntegerArrayListExtra(ids); int i = 1; //下面這個語句用於查看是否有傳值過來,傳了什麼值,通常用log.?來跟蹤錯誤 for(Integer j:list) { System.out.println(j); }
簡單的一條查詢語句即可:
sql = select detail from festival where sentence_id = + num+; textwish.setText(getWish(sql));
另外因為我們的操作很多都要查詢數據庫,就直接寫到一個方法中getWish()
private String getWish(String sql) { String wish = null; GetContactsService gcs = new GetContactsService(ThridActivity.this); Cursor curosr =gcs.query(sql, null); curosr.moveToFirst(); wish = curosr.getString(0); curosr.close(); return wish; }
ps:num是一個整數1-10都可以,看數據庫表的記錄數決定的
其實這裡就是簡單的改變上面那個num的數字而已,自增++
然後等於十的時候把num重置為1即可
btnchange.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(num == 10)num = 1; else ++num; sql = select detail from festival where sentence_id = + num+; textwish.setText(getWish(sql)); } });
就是給每個聯系人發送相同的短信,這裡的話,先讀取傳過來的集合獲取id
然後根據id讀取Contacts表中id對應的聯系人名稱,電話號碼;
將這兩個組合到一起,作為對話框的列表項的資源數組
還需要創建一個帶列表的對話框,添加一個確定按鈕
代碼:
btnsendlike.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String ids = ; //將list集合中的數據取出來,結果可能是:7,8,9,這樣的 for(Integer j:list) { ids = ids + j + ,; } //去掉小尾巴,直接去掉最後一位即可 ids = ids.substring(0, ids.length()-1); System.out.println(ids); //需要取出Contacts表中的聯系人信息,用於等下對話框內容顯示以及發送短信時 sql = select * from contacts where _id in(+ids+); System.out.println(sql); List
private void sendMessage(String number,String message) { SmsManager.getDefault().sendTextMessage(number, null, message, null, null); Toast.makeText(getApplicationContext(), 發送成功, Toast.LENGTH_SHORT).show(); //在模擬器環境中我們需要查看發出的短信內容或者真機調試時不想浪費短信錢 //就使用log.i查看發出的短信內容即可 Log.i(sendMessage, number+message); }
其實就是後台發送短信!
完成前面6步後,程序已經可以完成基本功能了:
效果如下:
接著查看我們的Logcat,可以看到發送的信息內容:
就是隨機給不同的人發送不同內容的短信:
其實這裡和上面那個部分是大同小異的,僅僅是修改發送短信時
的祝福語內容,使用隨機數決定發送的祝福語而已,僅僅需要添加下述代碼即可:
1)取出Festival表中的detail字段的所有記錄,存儲到字符串數組中
//將所有的祝福語短信存儲到字符串數組中 String sql = select detail from festival; String[] showmsg = new String[10]; GetContactsService gcService = new GetContactsService(ThridActivity.this); Cursor curosr =gcService.query(sql, null); int s = 0; curosr.moveToFirst(); while(curosr.moveToNext()) { showmsg[s] = curosr.getString(0); s++; } final String[] fishowmsg = showmsg;
for(int p = 0;p < lg;p++) { String num = finumber[p]; //只需要修改輸出時的祝福語內容即可 int randow = (int) (Math.random() * 10); String wish = editappellation.getText().toString() + finame[p] + 我是+ editme.getText().toString() + fishowmsg[randow]; sendMessage(num, wish); }運行截圖:
截至之當前的項目代碼:
代碼下載
1)解析Intent中存儲的list集合:
Intent it = getIntent();
final List
2)SQLite數據庫的相關操作,以及cursor的使用
切忌一點,使用cursor一定要調用cursor.moveToFirst()不然會報錯哦!
另外可以調用moveToNext()可以使游標後移!可使用getXxx獲取不同類型的數據
3)使用SmsManager.getDefault().sendTextMessage(number, null, message, null, null);
發送短信
4)生成1~10內的隨機整數:int randow = (int) (Math.random() * 10);
好了,節日群發助手這個項目開發就到這裡了,app僅僅是具有雛形,UI和代碼都沒有
優化,存在一定的冗余和bug,各位學員在自己編寫的過程中可以自行的修改或者優化
本文的初衷是幫助各位初學者鞏固相關的知識點的!後續會推出類似的知識點整合
項目,敬請關注,謝謝
當然有時間也會修改下這個app,正如大牛所說的,改下UI或許會是個好的app
關於Layout_width/height引發的寬高思考方式一: 結果不符合預期。運行結果: 方式二:
一、Android中的事件處理方法事件處理:響應用戶UI動作,提高應用程序交互性1、基於監聽的事件處理機制2、基於回調的事件處理機制3、Handler消息處理前面我們已經
android studio和eclipse 稍微有點不同。Android studio 版本1.3SqlCipher 版本3.3.11.將sqlcipher.jar復制
前言之前說過了在Android中,動畫Animation的實現有兩種方式:Tween Animation(漸變動畫)和Frame Animation(幀動畫)。漸變動畫是