[android] 09_Android练习2——电话拨号器

Android 4.0

电话拨号器

电话拨号器

package cn.zengfansheng.phone;
 
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
 
    private EditText etDail;
    /**
     * activity创建的时候 调用的方法
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //1、设置activity显示的内容:一个xml文件
        setContentView(R.layout.phone_ui);
        //2、通过id寻找控件
        etDail = (EditText) MainActivity.this.findViewById(R.id.et_dail);
        //寻找edittext  界面初始化的时候寻找控件 ,避免多次的查询
        Button btDail = (Button) this.findViewById(R.id.bt_dail);
        //3、给按钮注册一个点击事件的监听器
        btDail.setOnClickListener(new MyButtonListener());
    }
    private class MyButtonListener implements OnClickListener{
 
        /**
         * 当按钮被点击的时候调用
         */

        @Override
        public void onClick(View v) {
 
            String phoneNumber = etDail.getText().toString();
 
            Intent intent = new Intent();
            //设置意图动作
            intent.setAction(Intent.ACTION_CALL);
            //设置意图数据
            //intent.setData(Uri.parse(phoneNumber));//问题1:
            intent.setData(Uri.parse("tel:"+phoneNumber));
            //开启意图
            MainActivity.this.startActivity(intent);
 
        }
 
    }
}

问题1://intent.setData(Uri.parse(phoneNumber));

10-10 15:34:54.144: E/AndroidRuntime(10307): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=11 }

解决:intent.setData(Uri.parse("tel:"+phoneNumber));

问题2:打电话权限问题

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{41226d68 621:cn.zengfansheng.phone/u0a42} (pid=621, uid=10042) requires android.permission.CALL_PHONE

解决:增加用户权限

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>