如题所述
可以的!1 案例目的
本案例通过一个简单通讯工具来巩固android的activity、LinearLayout布局、基本控件Button、打电话发短信以及应用程序交互通信Intent的使用。本案例重点讲解android中事件处理原理以及该原理在项目中的应用。
2 案例介绍
零距通这个通讯工具可以实现发短信打电话的功能,无论在天涯海角,只需使用零距通,让你跟你的朋友,家人从此变成零距离无障碍沟通,零距通,让你的生活从此零距离。
3 案例分析
本项目采用android2.3.3开发。由于该项目主要实现打电话发短信的功能,用Intent激活程序---电话与短信本篇中使用的 Intent 打电话程序中,Intent 的行为是 ACTION_DIAL,同时在 Intent 中传递被呼叫人的电话号码。拨打电话的关键有两个方面,首先,要在 AndroidManifest 中添加 uses-permission,并声明android:name="android.permission.CALL_PHONE" 权限。由於打电话是属於手机的底层服务,与用户隐私及通话费用等话题息息相关,困此,程序必须取得权限。其次,通过自定义 Intent 对象,带入“ACTION_CALL” 这个关键(Action),以及通过Uri.parse()的方法将用户输入电话号码(Data)带入,最后以 startActivity()方法,即可完成。要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中添加如下内容
<uses-permissionandroid:name=”android.permission.SEND_SMS”/>
4 案例设计
单击“发短信”,“打电话”按钮时的事件处理流程如下:
(1)创建“发短信”,“打电话”按钮事件源。
(2)事件源向点击事件监听器类注册。
(3)当点击事件源“发短信”,“打电话”按钮时触发事件并调用事件监听器类中的onClick(View)方法处理业务逻辑。
5 业务逻辑设计

if(myeditText.getText().length()>0{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,0, new Intent(), 0);

先来效果图:
  
6 案例实现:
案例实现的部分重要代码如下:
1.首页界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="165dp"
android:layout_marginLeft="23dp"
android:background="@drawable/button"
android:text="打电话" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:background="@drawable/button"
android:text="发短信"

2.主界面activity

public class SmsAndPhoneActivity extends Activity {
/** Called when the activity is first created. */
Button button1,button2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据ID查找相应控件
button1=(Button) findViewById(R.id.button1);
button2=(Button) findViewById(R.id.button2);
//按钮监听事件
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到打电话页面
Intent intent = new Intent(SmsAndPhoneActivity.this,
Phone.class);
startActivity(intent);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到发短信页面
Intent intent1=new Intent(SmsAndPhoneActivity.this,
SmsActivity.class);
startActivity(intent1);
}
});
}
}

3.发短信界面activity

public class SmsActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms);
Button butsend=(Button) findViewById(R.id.butsend);
final EditText myEditText=(EditText)findViewById(R.id.mobile);
final EditText EditText2=(EditText)findViewById(R.id.content);
butsend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,
0, new Intent(), 0);
try {
if(content.length()>70)
{
List<String> msgs=sms.divideMessage(content);
for(String msg:msgs)
{
sms.sendTextMessage(mobile, null, msg, sentintent, null);
}
}
else
{
sms.sendTextMessage(mobile, null, content, sentintent, null);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Toast.makeText(SmsActivity.this, "短信发送成功", 1000).show();
}
});

4.打电话界面Activity

public class Phone extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone);
final EditText myeditText=(EditText) findViewById(R.id.myedittext);
Button butphone=(Button) findViewById(R.id.butphone);
butphone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(myeditText.getText().length()>0)
{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse
("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
}
});
}
}

源码下载:SmsAndPhone.zip
本案例通过一个简单通讯工具来巩固android的activity、LinearLayout布局、基本控件Button、打电话发短信以及应用程序交互通信Intent的使用。本案例重点讲解android中事件处理原理以及该原理在项目中的应用。
2 案例介绍
零距通这个通讯工具可以实现发短信打电话的功能,无论在天涯海角,只需使用零距通,让你跟你的朋友,家人从此变成零距离无障碍沟通,零距通,让你的生活从此零距离。
3 案例分析
本项目采用android2.3.3开发。由于该项目主要实现打电话发短信的功能,用Intent激活程序---电话与短信本篇中使用的 Intent 打电话程序中,Intent 的行为是 ACTION_DIAL,同时在 Intent 中传递被呼叫人的电话号码。拨打电话的关键有两个方面,首先,要在 AndroidManifest 中添加 uses-permission,并声明android:name="android.permission.CALL_PHONE" 权限。由於打电话是属於手机的底层服务,与用户隐私及通话费用等话题息息相关,困此,程序必须取得权限。其次,通过自定义 Intent 对象,带入“ACTION_CALL” 这个关键(Action),以及通过Uri.parse()的方法将用户输入电话号码(Data)带入,最后以 startActivity()方法,即可完成。要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中添加如下内容
<uses-permissionandroid:name=”android.permission.SEND_SMS”/>
4 案例设计
单击“发短信”,“打电话”按钮时的事件处理流程如下:
(1)创建“发短信”,“打电话”按钮事件源。
(2)事件源向点击事件监听器类注册。
(3)当点击事件源“发短信”,“打电话”按钮时触发事件并调用事件监听器类中的onClick(View)方法处理业务逻辑。
5 业务逻辑设计

if(myeditText.getText().length()>0{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,0, new Intent(), 0);

先来效果图:
  
6 案例实现:
案例实现的部分重要代码如下:
1.首页界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="165dp"
android:layout_marginLeft="23dp"
android:background="@drawable/button"
android:text="打电话" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:background="@drawable/button"
android:text="发短信"

2.主界面activity

public class SmsAndPhoneActivity extends Activity {
/** Called when the activity is first created. */
Button button1,button2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据ID查找相应控件
button1=(Button) findViewById(R.id.button1);
button2=(Button) findViewById(R.id.button2);
//按钮监听事件
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到打电话页面
Intent intent = new Intent(SmsAndPhoneActivity.this,
Phone.class);
startActivity(intent);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到发短信页面
Intent intent1=new Intent(SmsAndPhoneActivity.this,
SmsActivity.class);
startActivity(intent1);
}
});
}
}

3.发短信界面activity

public class SmsActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms);
Button butsend=(Button) findViewById(R.id.butsend);
final EditText myEditText=(EditText)findViewById(R.id.mobile);
final EditText EditText2=(EditText)findViewById(R.id.content);
butsend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,
0, new Intent(), 0);
try {
if(content.length()>70)
{
List<String> msgs=sms.divideMessage(content);
for(String msg:msgs)
{
sms.sendTextMessage(mobile, null, msg, sentintent, null);
}
}
else
{
sms.sendTextMessage(mobile, null, content, sentintent, null);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Toast.makeText(SmsActivity.this, "短信发送成功", 1000).show();
}
});

4.打电话界面Activity

public class Phone extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone);
final EditText myeditText=(EditText) findViewById(R.id.myedittext);
Button butphone=(Button) findViewById(R.id.butphone);
butphone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(myeditText.getText().length()>0)
{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse
("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
}
});
}
}

源码下载:SmsAndPhone.zip
温馨提示:答案为网友推荐,仅供参考
第1个回答 2022-12-19
您的 Android 手机在通话和短信等基础功能上出现故障可能会让您摸不着头脑。有时,您的Android 手机会停止拨打或接听电话,但它可以正常处理短信。这是一种不寻常的情况,如果您遇到同样的情况,这里是修复 Android 手机无法拨打电话但可以发短信问题的最佳方法