Android基础(一) 电话、短信

一.打电话

    1.界面

       TextView, EditText, Button

       EditText可以配置inputType属性指定输入类型

       EditText可以配置hint指定提示信息

       Button可以配置onClick指定点击时执行的方法

    2.Java代码

       findViewById()

       创建Intent, setAction(), setData(), startActivity()

    3.注意事项*

       打电话属于需要收费的功能, 必须配置权限, 否则使用时会出现异常

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        
        <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/insert_num"
                /> 
        
        <EditText
                android:inputType="phone"
                android:id="@+id/numET"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
        
        <!-- 在此处使用onClick属性,值为要调用的方法名,则在点击时调用该方法 -->
        <Button
                android:onClick="onClick"    
                android:id="@+id/callBT"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:text="@string/call"
                />

</LinearLayout>
//第一种
public class MainActivity1 extends Activity {
    
        private EditText numET;

    public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);            // 解析XML, 创建了4个对象
                
                // 获取到按钮对象
                Button callBT = (Button) findViewById(R.id.callBT);
                
                // 给按钮对象添加监听器
                callBT.setOnClickListener(new MyOnClickListener());
                
                // 当点击按钮的时候获取文本框
                numET = (EditText) findViewById(R.id.numET);
        }
        
        private class MyOnClickListener implements OnClickListener {
            public void onClick(View v) {
                // 获取文本框中的文本
                String num = numET.getText().toString();
                
                // 把文本作为电话号码, 拨打电话
                Intent intent = new Intent();                // 创建一个意图对象
                intent.setAction(Intent.ACTION_CALL);        // 设置意图的动作
                intent.setData(Uri.parse("tel:" + num));    // 设置意图的数据
                startActivity(intent);                        // 通过意图打开一个新的界面
            }
      }

}
//第二种:让Activity继承OnClickListener接口,则该Activity本身也是监听器
public class MainActivity2 extends Activity implements OnClickListener {
    
        private EditText numET;

    public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);            // 解析XML, 创建了4个对象
                
                // 获取到按钮对象
                Button callBT = (Button) findViewById(R.id.callBT);
                
                // 给按钮对象添加监听器
                callBT.setOnClickListener(this);//传入该Activity(该Activity本身也是监听器)
                
                // 当点击按钮的时候获取文本框
                numET = (EditText) findViewById(R.id.numET);
        }
        

    //由于该Activity本身也是监听器,则覆写onClick方法
    public void onClick(View v) {
        // 获取文本框中的文本
        String num = numET.getText().toString();
        
        // 把文本作为电话号码, 拨打电话
        Intent intent = new Intent();                // 创建一个意图对象
        intent.setAction(Intent.ACTION_CALL);        // 设置意图的动作
        intent.setData(Uri.parse("tel:" + num));    // 设置意图的数据
        startActivity(intent);                        
	} 
}
//第三种:让Activity继承OnClickListener接口,则该Activity本身也是监听器
public class MainActivity3 extends Activity {
    
        private EditText numET;

    public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);            // 解析XML, 创建了4个对象
                
                // 当点击按钮的时候获取文本框
                numET = (EditText) findViewById(R.id.numET);
        }
        
    //在main.xml的 <Button/> 中使用android:onClick="onClick"属性,则不需要获得按钮对象和定义监听器
    public void onClick(View v) {
        // 获取文本框中的文本
        String num = numET.getText().toString();
        
        // 把文本作为电话号码, 拨打电话
        Intent intent = new Intent();                // 创建一个意图对象
        intent.setAction(Intent.ACTION_CALL);        // 设置意图的动作
        intent.setData(Uri.parse("tel:" + num));    // 设置意图的数据
        startActivity(intent);                        // 通过意图打开一个新的界面
    
	}
}

 

二.发短信

   1.界面

      类似打电话, EditText配置了inputType为textMultiLine, maxLines和minLines

   2.Java代码

     获取SmsManager.getDefault()

     分割短信divideMessage()

     发送短信sendTextMessage()

     弹出通知Toast.makeText().show()

   3.注意事项

     发短信也需要收费, 需要权限

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/insert_num" />
        
        <EditText
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:id="@+id/numET"
                android:inputType="phone"
                />
              <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/insert_content" />
        
              <EditText
                      android:id="@+id/contentET"
                      android:inputType="textMultiLine"
                      android:minLines="3"
                      android:maxLines="5"
                      android:layout_width="fill_parent" 
                      android:layout_height="wrap_content"
                      />
              <Button
                      android:onClick="onClick"
                      android:text="@string/send_sms" 
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      />

</LinearLayout>
public class MainActivity extends Activity {
    private EditText numET;
    private EditText contentET;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        numET = (EditText) findViewById(R.id.numET);
        contentET = (EditText) findViewById(R.id.contentET);

    }

    //此处不能为private,否则外部无法调用
    public void onClick(View view) {
        try {
            // 获取两个文本框中的内容
            String num = numET.getText().toString();
            String content = contentET.getText().toString();
            
            //当号码为空时,弹出提示
            if(num.length()==0)
                Toast.makeText(getApplicationContext(), R.string.num_err, Toast.LENGTH_SHORT).show();
            //当信息内容为空时,弹出提示
            if(content.length()==0)
                Toast.makeText(getApplicationContext(), R.string.content_err, Toast.LENGTH_SHORT).show();
            
            // 发送信息
            SmsManager manager = SmsManager.getDefault();//获取短信管理器
            ArrayList<String> list = manager.divideMessage(content);//把短信分段
            for (String sms : list) {    //遍历list
                manager.sendTextMessage(num, null, sms, null, null);//分段发送短信
            }

            // 发送后,清除已发送文本
            contentET.setText("");
            // 弹出成功通知
            Toast.makeText(this, R.string.send_success, 0).show();
        } catch (Exception e) {
            // 如果发送失败,则弹出失败通知
            e.printStackTrace();
            Toast.makeText(this, R.string.send_failed, 0).show();
		}
	}
}

权限设置:

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

posted on 2013-03-24 10:23  foolchen  阅读(243)  评论(0编辑  收藏  举报

导航