Android发送短信、打电话、发送邮件的程序集合。
短信发送模式包括:
1.使用SMSManager发送短信,发送的短信不存于“信息”中。
2.使用ContentResolver发送短信,短信存放于“信息”中。(网传的方法,实践中未成功)
3.使用Intent发送短信,调用系统的“信息”程序发送。
打电话模式包括:
1.调用空的Dial拔号。
2.调用Dial并传递号码。
3.直拔。
发送邮件包括:
1.发送普通邮件。
2.发送附件。
- package lab.sodino.stm;
- import android.app.Activity;
- import android.content.ContentResolver;
- import android.content.ContentValues;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.telephony.gsm.SmsManager;
- import android.view.View;
- import android.widget.Button;
- import android.widget.Toast;
- public class STMAct extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ((Button) findViewById(R.id.btnSmsMag))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- sendSms1();
- Toast.makeText(STMAct.this, "已发送", Toast.LENGTH_SHORT)
- .show();
- }
- });
- ((Button) findViewById(R.id.btnSmsInbox))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- sendSmsInbox();
- Toast.makeText(STMAct.this, "已发送", Toast.LENGTH_SHORT)
- .show();
- }
- });
- ((Button) findViewById(R.id.btnSmsIntent))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- sendSmsIntent();
- Toast.makeText(STMAct.this, "已发送", Toast.LENGTH_SHORT)
- .show();
- }
- });
- ((Button) findViewById(R.id.btnTelEmpty))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- telDialEmpty();
- }
- });
- ((Button) findViewById(R.id.btnTelPhone))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- telDialPhone();
- }
- });
- ((Button) findViewById(R.id.btnTelCall))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- telCall();
- }
- });
- ((Button) findViewById(R.id.btnMailSendto))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- mailSendto();
- }
- });
- ((Button) findViewById(R.id.btnMailSend))
- .setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- mailSend();
- }
- });
- }
- private void sendSms1() {
- // 需要 android.permission.SEND_SMS
- SmsManager smsManager = SmsManager.getDefault();
- smsManager.sendTextMessage("10086", null, "1008611", null, null);
- }
- private void sendSmsInbox() {
- // 需要 android.permission.READ_SMS与android.permission.WRITE_SMS,经测试发送失败
- ContentValues values = new ContentValues();
- 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);
- }
- private void sendSmsIntent() {
- // 不需要权限,跳转到"信息"中。
- Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri
- .parse("sms://"));
- sendIntent.putExtra("address", "10086");
- sendIntent.putExtra("sms_body", "bylcs");
- startActivity(sendIntent);
- }
- private void telDialEmpty() {
- // 不需要权限,跳转到"拔号"中。
- Intent callIntent = new Intent(Intent.ACTION_CALL_BUTTON);
- startActivity(callIntent);
- }
- private void telDialPhone() {
- // 不需要权限,跳转到"拔号"中。
- Intent callIntent = new Intent(Intent.ACTION_DIAL, Uri
- .parse("tel:10086"));
- startActivity(callIntent);
- }
- private void telCall() {
- // 需要 android.permission.CALL_PHONE
- Intent callIntent = new Intent(Intent.ACTION_CALL, Uri
- .parse("tel:10086"));
- startActivity(callIntent);
- }
- private void mailSendto() {
- // 需要 android.permission.SENDTO权限
- Uri uri = Uri.parse("mailto:10086@qq.com");
- Intent mailIntent = new Intent(Intent.ACTION_SENDTO, uri);
- startActivity(mailIntent);
- }
- private void mailSend() {
- // 需要 android.permission.SEND权限
- Intent mailIntent = new Intent(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..."));
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:text="SMS"
- android:textSize="30sp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- />
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:background="#80808080">
- <Button
- android:text="SMSMag"
- android:id="@+id/btnSmsMag"
- android:gravity="center"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- ></Button>
- <Button
- android:text="Inbox"
- android:id="@+id/btnSmsInbox"
- android:gravity="center"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- ></Button>
- <Button
- android:text="Intent"
- android:id="@+id/btnSmsIntent"
- android:gravity="center"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- ></Button>
- </LinearLayout>
- <TextView
- android:text="TEL"
- android:textSize="30sp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></TextView>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:background="#80808080">
- <Button
- android:text="EmptyDial"
- android:id="@+id/btnTelEmpty"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></Button>
- <Button
- android:text="PhoneDial"
- android:id="@+id/btnTelPhone"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></Button>
- <Button
- android:text="Call"
- android:id="@+id/btnTelCall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></Button>
- </LinearLayout>
- <TextView
- android:text="MAIL"
- android:textSize="30sp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></TextView>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:background="#80808080">
- <Button
- android:text="SendTo"
- android:id="@+id/btnMailSendto"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- ></Button>
- <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必须有这个权限才能收到广播。
首先,需要定义权限:<permission android:name=" com.iteye.permission.receiver " />
然后,声明权限:<uses-permission android:name=" com.iteye.permission.receiver " />
这时接收者就能收到发送的广播。
2)反过来,如果接收者要求发送方必须拥有某个权限,我才接收你的广播怎么办呢?
<!-- 注册广播接收者
android:permission:控制发送方需要具备指定权限,才接收其广播.
-->
<receiver android:name=".MyReceiver" android:permission="com.permission.sender">
<intent-filter android:priority="100">
<action android:name="com.iteye.receiver.action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
即使过滤器匹配,如果发送方没有相应权限,接收者也不会接收其广播。