Android中简单的电话管理与短信管理App编写实例

Android中简单的电话管理与短信管理App编写实例,第1张

概述android电话管理器(TelephonyManger)实例:TelephonyManger是管理电话状态、网络信息的服务类。

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,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);         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> 

总结

以上是内存溢出为你收集整理的Android中简单的电话管理与短信管理App编写实例全部内容,希望文章能够帮你解决Android中简单的电话管理与短信管理App编写实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存