android通讯录:拨打电话和发短信
2015-01-30 22:44
260 查看
打电话效果图:
发短信效果图:
其中要注意的是拨打电话的权限和注册还有短信的权限
代码如下:
1)MainActivity
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
private String [] names=new String[]{联系人姓名"};
private String [] phones=new String[]{电话号码};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv=(ListView) findViewById(R.id.lv);
MyAdapter adapter =new MyAdapter();
lv.setAdapter(adapter);
//拨打电话
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//添加意图
Intent intent = new Intent();
//添加动作
intent.setAction(intent.ACTION_CALL);
//添加数据
intent.setData(Uri.parse("tel:"+phones[position]));
startActivity(intent);
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
Intent i=new Intent(getApplicationContext(), SmsActivity.class);
i.putExtra("number", phones[position]);
startActivity(i);
return true;
}
});
}
private class MyAdapter extends BaseAdapter{
///item的条目
@Override
public int getCount() {
// TODO Auto-generated method stub
return names.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
//item显示什么?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
/*//没有缓存
view = View.inflate(getApplicationContext(),R.layout.lv_item, null);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
tv_name.setText(names[position]);
tv_phone.setText(phones[position]);
System.out.println("position"+position+convertView);*/
ViewHolder holder=new ViewHolder();
if(convertView==null){
view = View.inflate(getApplicationContext(),R.layout.lv_item, null);
view.setTag(holder);
}else{
view=convertView;
holder=(ViewHolder) view.getTag();
}
holder.tv_name=(TextView) view.findViewById(R.id.tv_name);
holder.tv_phone=(TextView) view.findViewById(R.id.tv_phone);
holder.tv_name.setText(names[position]);
holder.tv_phone.setText(phones[position]);
System.out.println("position"+position+convertView);
return view;
}
}
private static class ViewHolder{
TextView tv_name;
TextView tv_phone;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2)SmsActivity
package com.eduask.demo1;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class SmsActivity extends Activity {
private TextView tv_number;
private EditText et_content;
private String number;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
tv_number = (TextView) findViewById(R.id.tv_number);
et_content = (EditText) findViewById(R.id.et_content);
number = getIntent().getStringExtra("number");
tv_number.setText(number);
}
public void send(View v){
String text = et_content.getText().toString().trim();
//获取短信管理器
SmsManager sm=SmsManager.getDefault();
sm.sendTextMessage(number, null, text, null, null);
Toast.makeText(getApplicationContext(), "发送成功!", 200).show();
}
}
3)lv_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dip" >
<ImageView
android:padding="5dip"
android:id="@+id/iv_image"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/ez1"
/>
<TextView
android:padding="5dip"
android:layout_marginLeft="10dip"
android:layout_toRightOf="@+id/iv_image"
android:id="@+id/tv_name"
android:layout_height="wrap_content"
android:layout_width="80dip"
android:textSize="20sp"
android:textColor="@android:color/black"
/>
<TextView
android:padding="5dip"
android:layout_marginLeft="20dip"
android:layout_toRightOf="@+id/tv_name"
android:textSize="20sp"
android:id="@+id/tv_phone"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="@android:color/black"
/>
</RelativeLayout>
4)activity_sms.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:hint="@string/content"
android:id="@+id/et_content"
android:lines="5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_number"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="11111"
/>
<Button
android:id="@+id/bt_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
android:onClick="send"
/>
</LinearLayout>
</LinearLayout>
5)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</RelativeLayout>
发短信效果图:
其中要注意的是拨打电话的权限和注册还有短信的权限
代码如下:
1)MainActivity
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
private String [] names=new String[]{联系人姓名"};
private String [] phones=new String[]{电话号码};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv=(ListView) findViewById(R.id.lv);
MyAdapter adapter =new MyAdapter();
lv.setAdapter(adapter);
//拨打电话
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//添加意图
Intent intent = new Intent();
//添加动作
intent.setAction(intent.ACTION_CALL);
//添加数据
intent.setData(Uri.parse("tel:"+phones[position]));
startActivity(intent);
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
Intent i=new Intent(getApplicationContext(), SmsActivity.class);
i.putExtra("number", phones[position]);
startActivity(i);
return true;
}
});
}
private class MyAdapter extends BaseAdapter{
///item的条目
@Override
public int getCount() {
// TODO Auto-generated method stub
return names.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
//item显示什么?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
/*//没有缓存
view = View.inflate(getApplicationContext(),R.layout.lv_item, null);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
tv_name.setText(names[position]);
tv_phone.setText(phones[position]);
System.out.println("position"+position+convertView);*/
ViewHolder holder=new ViewHolder();
if(convertView==null){
view = View.inflate(getApplicationContext(),R.layout.lv_item, null);
view.setTag(holder);
}else{
view=convertView;
holder=(ViewHolder) view.getTag();
}
holder.tv_name=(TextView) view.findViewById(R.id.tv_name);
holder.tv_phone=(TextView) view.findViewById(R.id.tv_phone);
holder.tv_name.setText(names[position]);
holder.tv_phone.setText(phones[position]);
System.out.println("position"+position+convertView);
return view;
}
}
private static class ViewHolder{
TextView tv_name;
TextView tv_phone;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2)SmsActivity
package com.eduask.demo1;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class SmsActivity extends Activity {
private TextView tv_number;
private EditText et_content;
private String number;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
tv_number = (TextView) findViewById(R.id.tv_number);
et_content = (EditText) findViewById(R.id.et_content);
number = getIntent().getStringExtra("number");
tv_number.setText(number);
}
public void send(View v){
String text = et_content.getText().toString().trim();
//获取短信管理器
SmsManager sm=SmsManager.getDefault();
sm.sendTextMessage(number, null, text, null, null);
Toast.makeText(getApplicationContext(), "发送成功!", 200).show();
}
}
3)lv_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dip" >
<ImageView
android:padding="5dip"
android:id="@+id/iv_image"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/ez1"
/>
<TextView
android:padding="5dip"
android:layout_marginLeft="10dip"
android:layout_toRightOf="@+id/iv_image"
android:id="@+id/tv_name"
android:layout_height="wrap_content"
android:layout_width="80dip"
android:textSize="20sp"
android:textColor="@android:color/black"
/>
<TextView
android:padding="5dip"
android:layout_marginLeft="20dip"
android:layout_toRightOf="@+id/tv_name"
android:textSize="20sp"
android:id="@+id/tv_phone"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="@android:color/black"
/>
</RelativeLayout>
4)activity_sms.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:hint="@string/content"
android:id="@+id/et_content"
android:lines="5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_number"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="11111"
/>
<Button
android:id="@+id/bt_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
android:onClick="send"
/>
</LinearLayout>
</LinearLayout>
5)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</RelativeLayout>
相关文章推荐
- Android拨打电话和发短信的简单程序
- android上拨打电话,发短信,存联系人的操作
- Android 拨打电话 发短信
- Android实战—实现自动读取通讯录和通话记录切换,ViewPage滑屏效果,可拨打电话
- android - 跳转拨打电话、通讯录、直接拨打电话
- Android拨打电话和发短信的简单程序
- android 点击拨打电话发短信
- Android实战--实现读取通讯录和拨打电话功能
- Android拨打电话和发短信
- android 单击按钮 拨打电话 发短信
- android 添加菜单 开发流程 短信发送与拨打电话
- 模拟器不能拨打电话 Android.process.acore has stopped unexpectedly
- android 拨打电话
- 使用Android拨打电话功能
- android监听用户的拨打电话的状态
- Android手机开发:在程序中拨打电话
- Android 电话查询(扩展成通讯录)
- 使用Android拨打电话功能
- android实现拨打电话
- Android开发(一)拨打电话程序