第三天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:今天写代码的时候,就一个简单的跳转,都出错,检查了好久才发现是对应页面中的一个变量名没改过来,真的坑,找错太难了