电话与短信服务(附源码)

来源:互联网 发布:淘宝视频收费标准 编辑:程序博客网 时间:2024/05/01 11:47

用Intent激活程序---电话与短信本篇中使用的 Intent 打电话程序中,Intent 的行为是 ACTION_DIAL,同时在 Intent 中传递被呼叫人的电话号码。


拨打电话的关键有两个方面,首先,要在 AndroidManifest 中添加 uses-permission(即为程序分配使用权限),并声明android:name="android.permission.CALL_PHONE" 权限。由於打电话是属於手机的底层服务,与用户隐私及通话费用等话题息息相关,困此,程序必须取得权限。其次,通过自定义 Intent 对象,带入“ACTION_CALL” 这个关键(Action),以及通过Uri.parse()的方法将用户输入电话号码(Data)带入,最后以 startActivity()方法,即可完成,代码如下:


 

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class phoneAndsmsAcitivity extends Activity {    private Button myButton;    private EditText myEditText;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        myButton=(Button)findViewById(R.id.button);        myEditText=(EditText)findViewById(R.id.mobile);        myButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                if(myEditText.getText().length()>0)                {                    Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse                            ("tel:"+myEditText.getText().toString()));                phoneAndsmsAcitivity.this.startActivity(myIntent);                }            }        });    }}

 

短信也是任何一款手机不可或缺的应用之一,几乎是手机使用频率最高的应用之一,Android自带有一个发短信的类 SmsManager,利用这个类,我们可以完成手机的短信发送与接收工作,其中 sentTextMessage() 方法需要传入五个值,依次是收件人地址(String)、发送人地址(String)、正文(String)、发送服务(PendingIntent)、与送达服务(PendingIntent),其中收件人与正文是不可为NULL的参数。跟打电话一样,涉及到与金钱有关的必须在配置文件分配权限,权限代码如下:<uses-permission android:name="android.permission.SEND_SMS"/>,smsManager的公开方法如下:

简单的发送短信代码:

package com.terry;import java.util.List;import android.app.Activity;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.telephony.gsm.SmsManager; import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText; import android.widget.Toast;@SuppressWarnings("deprecation")public class smsAcitivity extends Activity {    private Button myButton;    private EditText myEditText;    private EditText EditText2;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.sms);                myButton=(Button)findViewById(R.id.button);        myEditText=(EditText)findViewById(R.id.mobile);        EditText2=(EditText)findViewById(R.id.content);        myButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                 String mobile=myEditText.getText().toString();                 String content=EditText2.getText().toString();                SmsManager sms=SmsManager.getDefault();                PendingIntent sentintent =PendingIntent.getBroadcast(smsAcitivity.this, 0, new Intent(), 0);                try {                    if(content.length()>70)                    {                        List<String> msgs=sms.divideMessage(content);                        for(String msg:msgs)                        {                          sms.sendTextMessage(mobile, null, msg, sentintent, null);                         }                    }                    else                    {                                            sms.sendTextMessage(mobile, null, content, sentintent, null);                    }                } catch (Exception e) {                    // TODO: handle exception                    e.printStackTrace();                }                Toast.makeText(smsAcitivity.this, "短信發送成功", 1000).show();            }        });    }}


关於一个测试的小技巧:发送短信的时候我们需要两台机子可以测试,这时候我们要同时启动两个模拟器己达到发送与接收的效果,这时候你可以如下操作:开始 --cmd--emulator -data foo 依此在 dos 命令中输入,即可重新打开一个模拟器,

0 0