第九章 消息传送服务

第九章 消息传送服务

一.短信服务

1.通过编程发送短信可以发送和接收短信

Android有一个内置的短信应用

2.使用Intent发送短信

3.接收短信

4.警告

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="com.jfdimarzio.sms.MainActivity">

 

    <Button

        android:text="Send SMS"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/btnSendSMS"

        android:onClick="onClick"

        app:layout_constraintLeft_toLeftOf="@+id/activity_main"

        app:layout_constraintTop_toTopOf="@+id/activity_main"

        android:layout_marginTop="16dp"

        app:layout_constraintRight_toRightOf="@+id/activity_main"

        app:layout_constraintBottom_toBottomOf="@+id/activity_main"

        android:layout_marginBottom="16dp" />

 

    <TextView

        android:text="TextView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/textView"

        app:layout_constraintLeft_toLeftOf="@+id/btnSendSMS"

        app:layout_constraintTop_toBottomOf="@+id/btnSendSMS"

        android:layout_marginTop="8dp"

        app:layout_constraintRight_toRightOf="@+id/btnSendSMS"

        app:layout_constraintBottom_toBottomOf="@+id/activity_main"

        android:layout_marginBottom="16dp" />

</android.support.constraint.ConstraintLayout>

 

package com.jfdimarzio.sms;

 

import android.Manifest;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.content.pm.PackageManager;

import android.support.v4.app.ActivityCompat;

import android.support.v4.content.ContextCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

 

import static android.Manifest.permission_group.SMS;

 

public class MainActivity extends AppCompatActivity {

    final private int REQUEST_SEND_SMS = 123;

    final private int REQUEST_REC_SMS = 321;

    BroadcastReceiver smsSentReceiver;

    IntentFilter intentFilter;

 

    private BroadcastReceiver intentReceiver = new BroadcastReceiver() {

        @Override

        public void onReceive(Context context, Intent intent) {

            //---display the SMS received in the TextView---

            TextView SMSes = (TextView) findViewById(R.id.textView);

            SMSes.setText(intent.getExtras().getString("sms"));

        }

    };

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        if (ContextCompat.checkSelfPermission(this,

                Manifest.permission.SEND_SMS)

                != PackageManager.PERMISSION_GRANTED ) {

 

                ActivityCompat.requestPermissions(this,

                        new String[]{Manifest.permission.SEND_SMS},

                        REQUEST_SEND_SMS);

        }

 

        if (ContextCompat.checkSelfPermission(this,

                Manifest.permission.RECEIVE_SMS)

                != PackageManager.PERMISSION_GRANTED ) {

 

            ActivityCompat.requestPermissions(this,

                    new String[]{Manifest.permission.RECEIVE_SMS},

                    REQUEST_REC_SMS);

        }

 

        intentFilter = new IntentFilter();

        intentFilter.addAction("SMS_RECEIVED_ACTION");

 

        registerReceiver(intentReceiver, intentFilter);

    }

 

    @Override

    public void onResume() {

        super.onResume();

        //---register the receiver---

        //registerReceiver(intentReceiver, intentFilter);

 

    }

    @Override

    public void onPause() {

        super.onPause();

 

        //---unregister the receiver---

        unregisterReceiver(intentReceiver);

    }

 

 

    @Override

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

        switch (requestCode) {

            case REQUEST_SEND_SMS:

                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(MainActivity.this, "SEND Permission Granted", Toast.LENGTH_SHORT).show();

                } else {

                    Toast.makeText(MainActivity.this, "SEND Permission Denied", Toast.LENGTH_SHORT).show();

                }

                break;

            case REQUEST_REC_SMS:

                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(MainActivity.this, "RECEIVE Permission Granted", Toast.LENGTH_SHORT).show();

                } else {

                    Toast.makeText(MainActivity.this, "RECEIVE Permission Denied", Toast.LENGTH_SHORT).show();

                }

                break;

            default:

                super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        }

    }

 

    public void onClick(View v) {

 

        sendSMS("5554", "Hello my friends!");

 

    }

 

    //---sends an SMS message to another device---

    private void sendSMS(String phoneNumber, String message)

    {

        SmsManager sms = SmsManager.getDefault();

        sms.sendTextMessage(phoneNumber, null, message, null, null);

    }

 

 

 

}

 

package com.jfdimarzio.sms;

 

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.provider.Telephony;

import android.telephony.SmsMessage;

import android.util.Log;

import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver

{

    @Override

    public void onReceive(Context context, Intent intent)

    {

        //---get the SMS message passed in---

        Bundle bundle = intent.getExtras();

        SmsMessage[] msgs = null;

        String str = "SMS from ";

        if (bundle != null)

        {

            //---retrieve the SMS message received---

            msgs = Telephony.Sms.Intents.getMessagesFromIntent(intent);

 

            for (int i=0; i<msgs.length; i++){

                str += msgs[i].getMessageBody().toString();

            }

            //---display the new SMS message---

            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

            Log.d("SMSReceiver", str);

 

            //---launch the SMSActivity---

            Intent mainActivityIntent = new Intent(context, MainActivity.class);

            mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(mainActivityIntent);

 

            Intent broadcastIntent = new Intent();

            broadcastIntent.setAction("SMS_RECEIVED_ACTION");

            broadcastIntent.putExtra("sms", str);

            context.sendBroadcast(broadcastIntent);

 

        }

    }

}

 

二.发送电子邮件

为了示例能正常工作,必须在模拟器中配置Email应用

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="com.jfdimarzio.emails.MainActivity">

 

 

    <Button

        android:text="Send Email"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/btnSendEmail"

        app:layout_constraintLeft_toLeftOf="@+id/activity_main"

        app:layout_constraintTop_toTopOf="@+id/activity_main"

        app:layout_constraintRight_toRightOf="@+id/activity_main"

        app:layout_constraintBottom_toBottomOf="@+id/activity_main"

        android:onClick="onClick" />

</android.support.constraint.ConstraintLayout>

package com.jfdimarzio.emails;

 

import android.content.Intent;

import android.net.Uri;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

 

public class MainActivity extends AppCompatActivity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    public void onClick(View v) {

        //---replace the following email addresses with real ones---

        String[] to =

                {"someguy@example.com",

                        "anotherguy@example.com"};

        String[] cc = {"busybody@example.com"};

        sendEmail(to, cc, "Hello", "Hello my friends!");

    }

 

    //---sends an SMS message to another device---

    private void sendEmail(String[] emailAddresses, String[] carbonCopies,

                           String subject, String message)

    {

        Intent emailIntent = new Intent(Intent.ACTION_SEND);

        emailIntent.setData(Uri.parse("mailto:"));

        String[] to = emailAddresses;

        String[] cc = carbonCopies;

        emailIntent.putExtra(Intent.EXTRA_EMAIL, to);

        emailIntent.putExtra(Intent.EXTRA_CC, cc);

        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);

        emailIntent.putExtra(Intent.EXTRA_TEXT, message);

        emailIntent.setType("message/rfc822");

        startActivity(Intent.createChooser(emailIntent, "Email"));

    }

}

 

 

全部评论

相关推荐

06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
07-15 00:33
江苏大学 Java
代码飞升:哈哈哈哈评论区三个打广告的
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务