• Android:消息、通知与广播


    一、使用Toast显示消息提示框

    步骤:

    1、创建Toast对象,调用构造方法(new Toast(context))或调用方法makText()方法(显示内容和持续的时间)。

    2、是遏制消息提示的样式,对齐方式,页边距等。

    3、调用show()方法显示提示框。

    二、使用AlertDialog实现对话框

    在退出或其它需要再次确认的操作时,弹出对话框,样式如下:

     实例:显示普通对话框,列表对话框,单选对话框和多选对话框。

     主要代码如下。

    package com.example.alertdialog;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final Button btn1 = findViewById(R.id.btn1),
                    btn2 = findViewById(R.id.btn2),
                    btn3 = findViewById(R.id.btn3),
                    btn4 = findViewById(R.id.btn4);
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();//创建AlertDialog对象
                    alertDialog.setIcon(R.drawable.bell);//设置图标
                    alertDialog.setTitle("乔布斯:");//设置标题
                    alertDialog.setMessage("活着就是为了改变世界,难道还有其他原因吗?");//设置内容
                    alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE/*取消按钮*/, "", new DialogInterface.OnClickListener() {
                        @Override
                        //为添加的取消按钮设置监听器
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this,"",Toast.LENGTH_SHORT).show();
                        }
                    });
    
                    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE/*确定按钮*/, "", new DialogInterface.OnClickListener() {
                        @Override
                        //为添加的确定按钮设置监听器
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this,"",Toast.LENGTH_SHORT).show();
                        }
                    });
                    alertDialog.show();//显示
                }
            });
    
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //带4个列表项的对话框
                    final String[] items = new String[]{"1", "2", "3", "4"};
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//创建对象
                    builder.setIcon(R.drawable.bell);
                    builder.setTitle("选择:");
                    builder.setItems(items, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this,"你选择了:"+items[which],Toast.LENGTH_SHORT).show();
                        }
                    });//添加列表项
                    builder.create().show();//创建并显示对话框
                }
            });
    
            btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //带单选列表项的对话框
                    final String[] items = new String[]{"1","2","3"};
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setIcon(R.drawable.bell);
                    builder.setTitle("选择");
                    builder.setSingleChoiceItems(items, 0/*默认选中第一个*/, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this,"你选择了:"+items[which],Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setPositiveButton("确定",null);
                    builder.create().show();
                }
            });
    
            btn4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //带多选列表项的对话框
                    final boolean[]  checkedItems = new boolean[]{false,true,false,true,false};//记录各个选项是否被选中
                    final String[] items = new String[]{"1","2","3","4","5"};
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setIcon(R.drawable.bell);
                    builder.setTitle("选择");
                    builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            checkedItems[which] = isChecked;//改变被操作列表项的状态
                        }
                    });
                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            String result = "";//记录结果的字符串
                            for(int i=0;i<checkedItems.length;i++){
                                if(checkedItems[i]){
                                    result+=items[i]+"";//把列表项的内容加到result中
                                }
                            }
                            if(!"".equals(result)){
                                Toast.makeText(MainActivity.this,"你选择了:"+result,Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                    builder.create().show();
                }
            });
        }
    }

     三、使用Notification发送通知

    主要表示在状态栏上显示的时间,电量等,还有通知图标,从顶部下滑可以查看详情。

     使用Notification显示通知的步骤

    1、获取系统的NotificationManager服务,调用getSystemService()方法。

    2、创建Notification对象。

    3、为Notification对象设置属性。

    4、发送Notification通知,调用NotificationManager的notify()方法。

    代码实现:

    package com.example.notification;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
        final  int NOTIFYID = 0x123;//通知ID
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //创建并发送通知
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//获取通知管理器
            Notification.Builder notification = new Notification.Builder(MainActivity.this);//创建通知对象
            notification.setAutoCancel(true);//设置通知打开后自动消失
            notification.setSmallIcon(R.drawable.bell);//设置通知图标
            notification.setContentTitle("奖励百万红包!!!!");//设置通知内容标题
            notification.setContentTitle("点击查看详情!");//设置通知内容
            notification.setWhen(System.currentTimeMillis());//计时发送
            notification.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE);//设置声音和震动
            //创建一个启动详细页面的intent对象
            Intent intent = new Intent(MainActivity.this,DetailActivity.class);
            PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);//稍晚触发的intent机制,也就是说在我们查看通知的详细内容后再触发intent
            notification.setContentIntent(pi);//设置通知栏点击跳转
            notificationManager.notify(NOTIFYID,notification.build());//发送通知
        }
    }

    四、使用BroadcastReceiver(广播接收器)

    在Android中,用intent携带的数据代表发送一条广播,然后通过注册BroadcastReceiver来接收广播。

    广播没有自己的表现形式,可以用通知、对话框和消息提示框等展示出来。

    五、使用AlarmManager设置闹钟

    实例:

    1、在main.xml中设置布局文件,主要是添加时间选择器和确认按钮。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TimePicker
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
        <Button
            android:id="@+id/set"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="20dp"
            android:text="设置闹钟"/>
    
    </RelativeLayout>

    2、在MainActivity中设置闹钟。

    package com.example.alarm;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TimePicker;
    import android.widget.Toast;
    
    import java.util.Calendar;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final TimePicker timePicker = findViewById(R.id.time);
            timePicker.setIs24HourView(true);//设置24小时制
            Button button =findViewById(R.id.set);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置闹钟
                    Intent intent = new Intent(MainActivity.this,AlarmActivity.class);
                    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0);//获取显示闹钟的PendingIntent对象
                    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);//获取对象
                    Calendar calendar = Calendar.getInstance();//获取日历对象
                    calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());//设置小时数
                    calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());//分钟数
                    calendar.set(Calendar.SECOND,0);//设置开始的秒数,0秒
                    alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);//设置了闹钟
                    Toast.makeText(MainActivity.this,"设置闹钟成功",Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

    其中在 alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent) 中,第一个参数代表闹钟类型,具体属性值如下:

    3、设置调转的AlarmActivity

    package com.example.alarm;
    
    import androidx.appcompat.app.AlertDialog;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    
    public class AlarmActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            AlertDialog alertDialog = new AlertDialog.Builder(this).create();
            alertDialog.setTitle("传递正能量:");
            alertDialog.setMessage("要么出众,要么出局。");
            alertDialog.setIcon(R.mipmap.bell);
            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(AlarmActivity.this,MainActivity.class);
                    startActivity(intent);
                }
            });
            alertDialog.show();
    
    
        }
    }

    便可实现,到达时间时,弹出消息提示框。

  • 相关阅读:
    Html2Text
    分析文件上传过程中的HTTP头部
    去除html标签
    .NET/C#中的索引器
    MSB与LSB
    大流量网站的底层系统架构
    经典SQL语句,可以让行的数据当列来显示
    在页面弹出漂亮的提示框右下角弹出,方正的框
    ASP.NET读取XML某节点返回DataTable实例
    读取EXECL文件内容,可以支持分布
  • 原文地址:https://www.cnblogs.com/dongao/p/12257629.html
Copyright © 2020-2023  润新知