Android中簡單的電話管理與簡訊管理App編寫執行個體_Android

來源:互聯網
上載者:User

android電話管理器(TelephonyManger)執行個體:
TelephonyManger是管理電話狀態、網路資訊的服務類。
添加許可權:

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

邏輯功能:

package com.example.telephonystatus;  import java.io.FileNotFoundException; import java.io.OutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;  import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.view.Menu; import android.widget.ListView; import android.widget.SimpleAdapter;  public class MainActivity extends Activity {    private ListView list1;    // 聲明代表狀態名的數組   private String[] statusName;   // 聲明代表手機狀態名的集合   private ArrayList<String> statusValues = new ArrayList<String>();    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     list1 = (ListView) findViewById(R.id.list1);     // 擷取系統的TelephonyManager     TelephonyManager tele = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);     // 擷取各種狀態名的數組     statusName = getResources().getStringArray(R.array.statusNames);     // 擷取SIM卡的狀態的數組     String[] simType = getResources().getStringArray(R.array.simState);     // 擷取電話網路類型的數組     String[] phoneType = getResources().getStringArray(R.array.phoneType);     // 擷取裝置編號     statusValues.add(tele.getDeviceId());     // 擷取系統平台的版本     statusValues.add(tele.getDeviceSoftwareVersion() != null ? tele         .getDeviceSoftwareVersion() : "未知");     // 擷取網路運營代號     statusValues.add(tele.getNetworkOperator());     // 擷取網路電訊廠商的名稱     statusValues.add(tele.getNetworkOperatorName());     // 擷取行動電話通訊的類型     statusValues.add(phoneType[tele.getPhoneType()]);     // 擷取設為所在的位置     statusValues.add(tele.getCellLocation() != null ? tele         .getCellLocation().toString() : "未知");     // 擷取sim卡的國別     statusValues.add(tele.getSimCountryIso());     // 擷取sim卡的序號     statusValues.add(tele.getSimSerialNumber());     // 擷取sim卡的狀態     statusValues.add(simType[tele.getSimState()]);      List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();     for (int i = 0; i < statusValues.size(); i++) {       HashMap<String, Object> hasp = new HashMap<String, Object>();       hasp.put("name", statusName[i]);       hasp.put("values", statusValues.get(i));       list.add(hasp);     }     SimpleAdapter simple = new SimpleAdapter(this, list, R.layout.items,         new String[] { "name", "values" }, new int[] { R.id.text1,             R.id.text2 });     list1.setAdapter(simple);     // 建立一個電話監聽器         PhoneStateListener listener = new PhoneStateListener() {            // 監聽撥打電話狀態           @Override           public void onCallStateChanged(int state, String incomingNumber) {              switch (state) {             // 無任何狀態             case TelephonyManager.CALL_STATE_IDLE:               break;             case TelephonyManager.CALL_STATE_OFFHOOK:               break;             // 來電響鈴             case TelephonyManager.CALL_STATE_RINGING:               OutputStream os = null;               try {                 os = openFileOutput("phoneList", MODE_APPEND);               } catch (FileNotFoundException e) {                 e.printStackTrace();               }               PrintStream ps = new PrintStream(os);               // 講電話號碼記錄到檔案中               ps.println(new Date() + "來電:" + incomingNumber);               ps.close();               break;             default:               break;             }             super.onCallStateChanged(state, incomingNumber);           }          };         tele.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);   }    @Override   public boolean onCreateOptionsMenu(Menu menu) {     // Inflate the menu; this adds items to the action bar if it is present.     getMenuInflater().inflate(R.menu.main, menu);     return true;   }  } 

android簡訊管理器(SmsManager)執行個體
需要註冊的許可權:

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

群發簡訊功能:

package com.android.xiong.groupsend;  import java.util.ArrayList; import java.util.List;  import android.app.Activity; import android.app.AlertDialog; import android.app.PendingIntent; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.telephony.SmsManager; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast;  public class MainActivity extends Activity {    private Button bt1, bt2;   private EditText ed1, ed2;   private SmsManager sManger;   List<String> sendList = new ArrayList<String>();    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     bt1 = (Button) findViewById(R.id.bt1);     bt2 = (Button) findViewById(R.id.bt2);     ed1 = (EditText) findViewById(R.id.ed1);     ed2 = (EditText) findViewById(R.id.ed2);     // 擷取SmsManger     sManger = SmsManager.getDefault();     bt1.setOnClickListener(new OnClickListener() {        @Override       public void onClick(View v) {         for (String send : sendList) {           // 建立PendIntent對象           PendingIntent ped = PendingIntent.getActivity(               MainActivity.this, 0, new Intent(), 0);           // 發送資訊           sManger.sendTextMessage(send, null, ed2.getText()               .toString(), ped, null);         }         // 提示訊息發送完畢         Toast.makeText(MainActivity.this, "簡訊群發完", Toast.LENGTH_LONG)             .show();       }     });     bt2.setOnClickListener(new OnClickListener() {        @Override       public void onClick(View v) {         // 查看連絡人的電話號碼         final Cursor cursor = getContentResolver().query(             ContactsContract.CommonDataKinds.Phone.CONTENT_URI,             null, null, null, null);         BaseAdapter adapter = new BaseAdapter() {            @Override           public View getView(int position, View convertView,               ViewGroup parent) {             cursor.moveToPosition(position);             CheckBox rb = new CheckBox(MainActivity.this);             // 擷取連絡人的電話號碼 並去掉中間的中畫、空格             String number = cursor                 .getString(                     cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))                 .replace("-", "");             rb.setText(number);             // 如果該號碼已經加入發送人名單,預設勾選該號碼             if (sendList.contains(number)) {               rb.setChecked(true);             }             return rb;           }            @Override           public long getItemId(int position) {             // TODO Auto-generated method stub             return position;           }            @Override           public Object getItem(int position) {             // TODO Auto-generated method stub             return position;           }            @Override           public int getCount() {             // TODO Auto-generated method stub             return cursor.getCount();           }         };         // 載入list.xml布局檔案對應的View         View selectView = getLayoutInflater().inflate(R.layout.item,             null);         final ListView listView = (ListView) selectView             .findViewById(R.id.list1);         listView.setAdapter(adapter);         new AlertDialog.Builder(MainActivity.this).setView(selectView).setPositiveButton("確定", new DialogInterface.OnClickListener() {                      @Override           public void onClick(DialogInterface dialog, int which) {             //清空sendList集合             sendList.clear();             //遍曆listView組件的每個清單項目             for(int i=0;i<listView.getCount();i++){               CheckBox checkBox=(CheckBox)listView.getChildAt(i);               //如果該清單項目被勾選               if(checkBox.isChecked()){                 //添加到該清單項目中                 sendList.add(checkBox.getText().toString());                 ed1.append(checkBox.getText().toString()+",");               }             }                        }         }).show();       }     });   }    @Override   public boolean onCreateOptionsMenu(Menu menu) {     // Inflate the menu; this adds items to the action bar if it is present.     getMenuInflater().inflate(R.menu.main, menu);     return true;   }  } 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:orientation="vertical"   tools:context=".MainActivity" >      <EditText      android:id="@+id/ed1"     android:layout_width="match_parent"     android:layout_height="wrap_content"/>   <EditText      android:id="@+id/ed2"     android:layout_width="match_parent"     android:layout_height="wrap_content"     />   <Button      android:id="@+id/bt2"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="擷取連絡人"/>   <Button      android:id="@+id/bt1"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="發送資訊"/> </LinearLayout> 
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:orientation="vertical" >     <ListView     android:id="@+id/list1"     android:layout_width="match_parent"     android:layout_height="wrap_content" >   </ListView>   </LinearLayout> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.