Android发送短信、打电话、发送邮件的程序集合。
短信发送模式包括:
1.使用SMSManager发送短信,发送的短信不存于“信息”中。
2.使用ContentResolver发送短信,短信存放于“信息”中。(网传的方法,实践中未成功)
3.使用Intent发送短信,调用系统的“信息”程序发送。
打电话模式包括:
1.调用空的Dial拔号。
2.调用Dial并传递号码。
3.直拔。
发送邮件包括:
1.发送普通邮件。
2.发送附件。
[java] view plain copy
packagelab.sodino.stm;
importandroid.app.Activity;
importandroid.content.ContentResolver;
importandroid.content.ContentValues;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.telephony.gsm.SmsManager;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassSTMActextendsActivity {
/** Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.btnSmsMag))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
sendSms1();
Toast.makeText(STMAct.this,"已发送", Toast.LENGTH_SHORT)
.show();
}
});
((Button) findViewById(R.id.btnSmsInbox))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
sendSmsInbox();
Toast.makeText(STMAct.this,"已发送", Toast.LENGTH_SHORT)
.show();
}
});
((Button) findViewById(R.id.btnSmsIntent))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
sendSmsIntent();
Toast.makeText(STMAct.this,"已发送", Toast.LENGTH_SHORT)
.show();
}
});
((Button) findViewById(R.id.btnTelEmpty))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
telDialEmpty();
}
});
((Button) findViewById(R.id.btnTelPhone))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
telDialPhone();
}
});
((Button) findViewById(R.id.btnTelCall))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
telCall();
}
});
((Button) findViewById(R.id.btnMailSendto))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
mailSendto();
}
});
((Button) findViewById(R.id.btnMailSend))
.setOnClickListener(newButton.OnClickListener() {
publicvoidonClick(View v) {
mailSend();
}
});
}
privatevoidsendSms1() {
// 需要 android.permission.SEND_SMS
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("10086",null,"1008611",null,null);
}
privatevoidsendSmsInbox() {
// 需要 android.permission.READ_SMS与android.permission.WRITE_SMS,经测试发送失败
ContentValues values = newContentValues();
values.put("address","10086");
values.put("body","bylcx");
ContentResolver contentResolver = getContentResolver();
// 实验中两者都会在信息栏中保存所发的信息。
contentResolver.insert(Uri.parse("content://sms/sent"), values);
// contentResolver.insert(Uri.parse("content://sms/inbox"), values);
}
privatevoidsendSmsIntent() {
// 不需要权限,跳转到"信息"中。
Intent sendIntent = newIntent(Intent.ACTION_SENDTO, Uri
.parse("sms://"));
sendIntent.putExtra("address","10086");
sendIntent.putExtra("sms_body","bylcs");
startActivity(sendIntent);
}
privatevoidtelDialEmpty() {
// 不需要权限,跳转到"拔号"中。
Intent callIntent = newIntent(Intent.ACTION_CALL_BUTTON);
startActivity(callIntent);
}
privatevoidtelDialPhone() {
// 不需要权限,跳转到"拔号"中。
Intent callIntent = newIntent(Intent.ACTION_DIAL, Uri
.parse("tel:10086"));
startActivity(callIntent);
}
privatevoidtelCall() {
// 需要 android.permission.CALL_PHONE
Intent callIntent = newIntent(Intent.ACTION_CALL, Uri
.parse("tel:10086"));
startActivity(callIntent);
}
privatevoidmailSendto() {
// 需要 android.permission.SENDTO权限
Uri uri = Uri.parse("mailto:10086@qq.com");
Intent mailIntent = newIntent(Intent.ACTION_SENDTO, uri);
startActivity(mailIntent);
}
privatevoidmailSend() {
// 需要 android.permission.SEND权限
Intent mailIntent = newIntent(Intent.ACTION_SEND);
// 可以试下“plain/text”与“text/plain”的区别,嘿嘿
mailIntent.setType("plain/text");
String[] arrReceiver = { "10086@qq.com","10086@qq.com"};
String[] arrCc = { "10086@qq.com","10086@qq.com"};
String[] arrBcc = { "10086@qq.com","10086@qq.com"};
String mailSubject = "MailSubject";
String mailBody = "Mail Sodino Test";
String attachPath = "file:///sdcard/UCDownloads/ATest.apk";
mailIntent.putExtra(Intent.EXTRA_EMAIL, arrReceiver);
mailIntent.putExtra(Intent.EXTRA_CC, arrCc);
mailIntent.putExtra(Intent.EXTRA_BCC, arrBcc);
mailIntent.putExtra(Intent.EXTRA_SUBJECT, mailSubject);
mailIntent.putExtra(Intent.EXTRA_TEXT, mailBody);
mailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(attachPath));
mailIntent.setType("audio/mp3");
startActivity(Intent.createChooser(mailIntent, "Mail Sending..."));
}
}
[xhtml] view plain copy
xmlversion="1.0"encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:text="SMS"
android:textSize="30sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#80808080">
android:text="SMSMag"
android:id="@+id/btnSmsMag"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>Button>
android:text="Inbox"
android:id="@+id/btnSmsInbox"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>Button>
android:text="Intent"
android:id="@+id/btnSmsIntent"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>Button>
LinearLayout>
android:text="TEL"
android:textSize="30sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>TextView>
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#80808080">
android:text="EmptyDial"
android:id="@+id/btnTelEmpty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>Button>
android:text="PhoneDial"
android:id="@+id/btnTelPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>Button>
android:text="Call"
android:id="@+id/btnTelCall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>Button>
LinearLayout>
android:text="MAIL"
android:textSize="30sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>TextView>
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#80808080">
android:text="SendTo"
android:id="@+id/btnMailSendto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>Button>
android:text="Send(Attach)"
android:id="@+id/btnMailSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>Button>
LinearLayout>
LinearLayout>
如何控制接收者或者发送方得权限?
1)如果广播发送方要求接收方必须有某个权限才能收到广播怎么做呢?
/**
* 发送广播,指定接收者权限
* sendBroadcast(i, "com.iteye.permission.receiver");//指定接收者权限
*/
public void sendBroadcast() {
//隐式意图,发送广播
Intent i = new Intent();
i.setAction("com.iteye.receiver.action");
i.putExtra("name", "tom");
this.sendBroadcast(i, " com.iteye.permission.receiver ");
Log.i("Other",".send ok!");
}
在清单文件里receiver必须有这个权限才能收到广播。
首先,需要定义权限:
然后,声明权限:
这时接收者就能收到发送的广播。
2)反过来,如果接收者要求发送方必须拥有某个权限,我才接收你的广播怎么办呢?
即使过滤器匹配,如果发送方没有相应权限,接收者也不会接收其广播。