第三天android---------实现对应的接口
今天主要是学习了安卓中如何实现安卓提供的各种接口,或者说功能块,比如说打电话,发短信这种需要权限,涉及系统安全的操作。下面,,开始实现打电话和发短信
打电话
我实现的界面如下(运用了表格布局):
按键可以做好看一点,但是感觉太麻烦,就直接用button了,它的定义如下:
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="70dp"
android:onClick="digital_click" //全部绑定同一个事件
android:text="1" /> //存放值,按键对应的事件如下
public void digital_click(View view){
Button btnDigital=(Button) view;
String text=btnDigital.getText().toString();
a=a+text;
textResult.setText(a.toString());
}就是简单的读取该按键的值,并将它加到现在的字符串的后面,显示到对应的显示框中。
拨打按键对应的事件如下:
public void dial(View view) {
String number=textResult.getText().toString();
Intent intent = new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);//方法内部会自动为Intent添加类别: android.intent.category.DEFAULT
}它主要是得到当前输入的号码,并调用Intent来实现打电话,可以说这一段是关键点,不过,在运行之前,还要在对应的对方加入下面的代码来获取权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.VIBRATE" /> 
而页面中的删除按键,是来删除字符串的最后一个字符,比较简单,不再说明。
其中的新建联系人,也是一个按键,它绑定的事件如下:
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);
}主要是得到当前输入的号码,跳转并传递号码给系统的新建联系人页面。
至于短信,我是这样实现的:
这个是短信页面(虽然点击发送,它不是直接发送,而是跳转到系统的发送短信页面),它同样是实现了发送短信的接口,接口的实现如下:
public void send(View view){
String telMsg=message.this.tel.getText().toString();
String contentMsg=message.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);//设置数据,要去的地方
message.this.startActivity(it);
}在实现这个页面的时候,我想让前面的页面将用户可能输入的号码传递给该页面,最后我在网上找到了这样一个实现方法:
public void send_message(View view){ //在前一个页面对应的按键中绑定该事件,用来跳转和传值
String number=textResult.getText().toString(); //得到号码
Intent intent=new Intent();
intent.setClass(bo_hao.this, message.class);
intent.putExtra(to_you, number); /将号码和一个前面定义的变量绑定
bo_hao.this.startActivity(intent);
}而在短信页面,实现下面的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.message);
Intent intent =getIntent(); //相当于建立连接
String to_you=intent.getStringExtra(bo_hao.to_you); //得到值
this.tel=(EditText)super.findViewById(R.id.tel); //将值赋给对应的输入框
tel.setText(to_you);
this.content=(EditText)super.findViewById(R.id.content);
}
上面,大概就是今天学到的东西了,主要的还算知道如何实现安卓的接口了吧,其次是对安卓的编写更加熟练了。如果以后要做安卓,总体还算比较简单,但是写代码是时候不好调试,出错了也不知道错在哪,而且还要熟悉各种组件和接口。
ps:今天写代码的时候,就一个简单的跳转,都出错,检查了好久才发现是对应页面中的一个变量名没改过来,真的坑,找错太难了