[android] android 实现打电话和发短信

一、mainactivity:

package com.xwolf.phone;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
   
    private Button phone;
    
    private Button sms ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        /*
         * 注意加载的先后顺序,一定是activity加载完成后再加载View
         * */
        setContentView(R.layout.activity_main);
                //获取指定的按钮
                phone = (Button) findViewById(R.id.main_btn_call);
                sms = (Button) findViewById(R.id.main_btn_sms);
                //绑定点击事件
                phone.setOnClickListener(this);
                sms.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch(id){
        
        case R.id.main_btn_call:
            //到拨打电话的activity
            Intent intent = new Intent(this,CallActivity.class);
            startActivity(intent);
            //setContentView(R.layout.activity_call);
            break;
        case R.id.main_btn_sms:
            //到发送短信的activity
            //setContentView(R.layout.activity_sms);
            Intent intent_send = new Intent(this,SmsActivity.class);
            startActivity(intent_send);
            break;
        
        }
    }

    

}

二、拨打电话:

package com.xwolf.phone;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CallActivity  extends Activity{
    
    //private EditText editText;
    //private Button call;
    //private Button back;
    private String TAG="CallActivity";
      @Override
    protected void onCreate(Bundle savedInstanceState) {
          
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_call);
        final EditText editText=(EditText) findViewById(R.id.call_edt_number);
        
        Button call = (Button) findViewById(R.id.call_btn_call);
        
        Button back = (Button) findViewById(R.id.call_btn_back);
        
        call.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                
                String number = editText.getText().toString().trim();
                if (number.length()<1){
                    
                    //Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG);
                    Toast.makeText(CallActivity.this,"电话不能为空", Toast.LENGTH_LONG).show();;
                    return ;
                }
                
                Log.i(TAG,"拨打电话");
                //拨打电话
                Intent intent= new Intent();
                
                intent.setData(Uri.parse("tel:"+number));
                
                intent.setAction(Intent.ACTION_CALL);
                startActivity(intent);
            }
        });
        back.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Log.w(TAG,"返回上一个页面..");
                //结束当前activity
                finish();
                
            }
        });
    }
      
    /*@SuppressLint("ShowToast")
    @Override
    public void onClick(View v) {
        String number = editText.getText().toString().trim();
        if (number.length()<1){
            Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG);
            return ;
        }
         
        switch(v.getId()){
        
        case R.id.call_btn_call:
            Log.i("CallActivity","拨打电话");
            //拨打电话
            Intent intent= new Intent();
            intent.setAction(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:"+number));
            startActivity(intent);
            
            break;
        case R.id.call_btn_back:
            Log.w("CallActivity","返回上一个页面..");
            //结束当前activity
            CallActivity.this.finish();
            break;
        
        }
    }*/
    
    

}

三、发送短信:

package com.xwolf.phone;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SmsActivity extends Activity implements OnClickListener {
   
    private EditText number;
    private EditText content ;
    private Button send;
    private Button back;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_sms);
        
        number=(EditText) findViewById(R.id.sms_edt_number);
        content=(EditText) findViewById(R.id.sms_edt_content);
        send = (Button) findViewById(R.id.sms_btn_send);
        back = (Button) findViewById(R.id.sms_btn_back);
        send.setOnClickListener(this);
        back.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
    
      int id = v.getId();
      switch(id){
      
      case R.id.sms_btn_back:
          
          //返回
          //onKeyDown(KeyEvent.KEYCODE_BACK, null);
        SmsActivity.this.finish();
          break;
     
      case R.id.sms_btn_send:
          
        String phone = number.getText().toString().trim();
            
            if (phone.length()<1){
                Toast.makeText(this, "电话不能为空", Toast.LENGTH_LONG).show();
                return ;
            }
            String text = content.getText().toString().trim();
            if (text.length()<1){
                Toast.makeText(this, "短信内容不能为空", Toast.LENGTH_LONG).show();
                return ;
            }
          //利用系统内置短信界面发送信息
         /* Intent intent = new Intent();
          intent.setData(Uri.parse("smsto:"+phone));
          intent.putExtra("sms_body",text);
          intent.setAction(Intent.ACTION_SENDTO);
          startActivity(intent);*/
            
            SmsManager smsManager = SmsManager.getDefault();
            //据说有字数限制,需要拆分,此处不考虑
            //smsManager.divideMessage(text)
            smsManager.sendTextMessage(phone, null, text, null, null);
            
            Toast.makeText(this, "短信发送成功", Toast.LENGTH_LONG).show();
            //返回
            finish();
            
          break;
      
      }
    }

    
     
}

 

第一个比较简单的功能中遇到的问题:

 

1.先启动activity后才可以初始化获取指定的View.否则出现指定的类不存在的异常

貌似是这个 Error generating final archive: java.io.FileNotFoundException: E:\workspace\android\xxx\bin\resources.ap_ does not exist 。

2.分支activity要在AndroidManifest.xml中全部添加其中。

3.添加拨打电话和发送短信的权限。

 <!--添加打电话的权限  -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <!-- 发送短信 -->
     <uses-permission android:name="android.permission.SEND_SMS"/>

4.拨打电话和发送短信的方式比较特别:

//拨打电话
                Intent intent= new Intent();
                intent.setData(Uri.parse("tel:"+number));
                intent.setAction(Intent.ACTION_CALL);
                startActivity(intent);
//发送短信
 Intent intent = new Intent();
          intent.setData(Uri.parse("smsto:"+phone));
          intent.putExtra("sms_body",text);
          intent.setAction(Intent.ACTION_SENDTO);
          startActivity(intent);

当然不是真正的发送短信,只是跳转到系统内置的短信发送界面。

 

posted @ 2015-02-06 16:30  snow__wolf  阅读(333)  评论(0)    收藏  举报