一个可打电话,发短信、读取通讯录的小程序。
手机拨号器的制作流程:
1.实现拨号器的页面布局
2.对按钮进行监听
3.实现编辑框的输入
4.实现对每一个数字按键的绑定
5.实现删除功能
6.实现拨号功能(添加权限)
7.实现添加联系人功能
8.实现发短信功能(新建xml页面,页面跳转)
9.实现发邮件功能
10.手残关闭了eclipse左侧窗口怎么办
11.通信录
1.实现拨号器的页面布局
activity_main.xml
<LinearLayout //线性布局 android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > //水平布局 <Button android:id="@+id/contact" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" //布局比重 android:text="联系人"/> <Button android:id="@+id/cai" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:text="彩信"/> <Button android:id="@+id/mail" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:text="邮件"/> </LinearLayout> <EditText android:id="@+id/et_showview" android:layout_width="fill_parent" android:layout_height="120dip" android:layout_marginTop="20dip" android:ems="10" //设置EditText的宽度为10个字符的宽度,超出的部分将不显示 android:background="#ffffffff" //背景色 android:textSize="40sp" //字体大小 android:textStyle="bold" //字体加粗 android:textColor="#ff333333" > //字体颜色 <requestFocus /> //获得输入的光标 </EditText> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="20dip" android:gravity="center_horizontal" //水平居中 android:orientation="vertical" > //垂直布局 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_1" android:text="1" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_2" android:text="2" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_3" android:text="3" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_4" android:text="4" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_5" android:text="5" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_6" android:text="6" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_7" android:text="7" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_8" android:text="8" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_9" android:text="9" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_xing" android:text="*" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_0" android:text="0" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_jing" android:text="#" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_dial" android:text="拨号" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_mes" android:text="信息" /> <Button android:layout_width="fill_parent" android:layout_height="60dp" android:layout_weight="1" android:id="@+id/btn_del" android:text="删除" /> </LinearLayout> </LinearLayout>运行到手机上的界面如下:
以下代码参照学姐博客 http://429899791.iteye.com/blog/2206277 2.对按钮进行监听 给联系人按钮添加:android:onClick="addContact" 给彩信按钮添加:android:onClick="cai" 给邮件按钮添加:android:onClick="sendmail" 给拨号按钮添加:android:onClick="dial" 给删除按钮添加:android:onClick="delete" 给其余数字按钮添加:android:onClick="digital_click" 3.实现编辑框的输入 MainActivity.java
public class MainActivity extends Activity { EditText textResult;//显示框 StringBuffer currentNum=new StringBuffer();//用于接收输入 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//保存Activity的状态 setContentView(R.layout.activity_main); textResult=(EditText)findViewById(R.id.et_showview); } }4.实现对每一个数字按键的绑定 接下来就是每一个数字按键绑定的方法处理,每按一个键,就记录下text,然后添加到StringBuffer里面 MainActivity.java
public void digital_click(View view){ Button btnDigital=(Button) view; String text=btnDigital.getText().toString(); currentNum.append(text); display(); }并显示到编辑框上
private void display() { // TODO Auto-generated method stub textResult.setText(currentNum.toString()); }5.实现删除功能 MainActivity.java
public void delete(View view){ if(currentNum.length()>=1){ currentNum.delete(currentNum.length()-1, currentNum.length()); } if(currentNum.length()==0){ Toast toast=Toast.makeText(this,"请输入号码", 100); toast.show(); display(); } textResult.setText(currentNum); }迫不及待的想运行一下了
按删除键后
6.实现拨号功能(添加权限) 接下来就是最重要的部分了,拨号键绑定方法: MainActivity.java
public void dial(View view){ EditText text=(EditText)findViewById(R.id.et_showview); String number=text.getText().toString(); if(currentNum.length()==0){ Toast toast=Toast.makeText(this,"请输入号码", 100); toast.show(); display(); } else{ Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL);//设置事件跳转到系统默认的拨号页面 intent.setData(Uri.parse("tel:"+number));//传送数据 startActivity(intent); //方法内部会自动为Intent添加类别:android.intent.categoty.DEFAULT } }接下来是很重要的部分,添加权限 AndroidManifest.xml
<uses-permission android:name="android.permission.CALL_PHONE" />赶紧给你的朋友打个电话试一下
7.实现添加联系人功能 MainActivity.java
public void addContact(View view){ Intent it=new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"), "contacts")); it.setType("vnd.android.cursor.dir/person"); String number=textResult.getText().toString(); it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE, number); startActivity(it); }运行效果:
8.实现发短信功能 点击"信息”按钮,跳转到一个新的界面 首先,遇到的第一个问题就是如何新建一个xml文件
接下就是设计新页面的布局 sendmessage.xml
<TableLayout//表格布局 android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"//水平居中 android:layout_marginLeft="15dp" android:layout_marginTop="40dp" android:layout_marginRight="15dp"> <TableRow//表格行 android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="40dp" android:textSize="20sp" android:text="收件人:" /> <EditText android:id="@+id/tel" android:layout_width="wrap_content" android:layout_height="40dp" android:background="#ffffffff" android:layout_marginLeft="10dp" android:textSize="20sp" android:textColor="#ff333333" android:ems="10"/> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dp"> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="40dp" android:textSize="20sp" android:text="内容:" /> <EditText android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="150dp" android:background="#ffffffff" android:layout_marginLeft="10dp" android:textSize="20sp" android:textColor="#ff333333" android:ems="10"/> </TableRow> <Button android:id="@+id/send" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="发送" android:textSize="20sp"/> </TableLayout>运行效果:
下面是实现页面跳转功能:
MainActivity.java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//保存Activity的状态 setContentView(R.layout.activity_main); //view层的控件和业务层的控件,靠id关联映射, //给btn赋值,即设置布局文件中的Button按钮id进行关联 Button btn=(Button)findViewById(R.id.btn_mes); //给btn绑定监听事件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,sendmessage.class); startActivity(intent); } }); }在这里要新建一个跟xml同名的文件
此时点击“信息”按钮就可以成功跳转到该页面 NO!!NO!!NO!!此时还不能成功跳转,忘记一件重要的事: 每创建一个新的页面,都不要忘记注册!!!!! AndroidManifest.xml
<activity android:name="sendmessage" android:label="@string/app_name" > </activity>跟文件中原有的activity标签并列 此时才可以成功跳转。 下面的思路及代码参照学姐博客 http://429899791.iteye.com/blog/2206382 接下来绑定button的监听方法
android:onClick="send"最后是发送短信功能的实现 sendmessage.java
public class sendmessage extends Activity { private EditText tel=null; private EditText content=null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sendmessage); this.tel=(EditText)super.findViewById(R.id.tel); this.content=(EditText)super.findViewById(R.id.content); } public void send(View view){ String telMsg=sendmessage.this.tel.getText().toString(); String contentMsg=sendmessage.this.content.getText().toString(); Uri uri=Uri.parse("smsto:"+telMsg);//接收人手机 Intent it=new Intent(); it.setAction(Intent.ACTION_SENDTO);//指定action,我要发短信 it.putExtra("sms_body", contentMsg);//设置信息内容 it.setType("vnd.android-dir/mms-sms") ;//设置MIME类型 it.setData(uri);//设置数据,要去的地方 sendmessage.this.startActivity(it); } }这里又忘记了一件重要的事,添加权限 AndroidManifest.xml
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.SEND" />这样才可以发短信 运行效果:
成功!!!嘻嘻嘻 9.实现发邮件功能 以下代码参照学姐博客 http://429899791.iteye.com/blog/2206569 邮件监听为:android:onClick="sendmail" MainActivity.java
public void sendmail(View view){ Intent emailIntent=new Intent(Intent.ACTION_SEND); emailIntent.setType("plain/text");//设置类型 String address[]=new String[]{ "[email protected]" };//邮件地址 String subject="我要交作业";//邮件主题 String content="第一次数据库作业";//邮件内容 emailIntent.putExtra(Intent.EXTRA_EMAIL, address);//邮件地址 emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, content); startActivity(emailIntent); }实现效果:
成功跳转到发送邮件界面,但是手机本身的邮件好像有问题,所以不能给学姐发送邮件了。
10.手残关闭了eclipse左侧窗口怎么办
11.通讯录 11.1获取手机通讯录信息