Broadcast组件——收发广播应用——收发标准广播
作者:互联网
================================================================================================
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <Button android:id="@+id/btn_send_standard" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="发送标准广播" android:textColor="@color/black" android:textSize="17sp" /> <TextView android:id="@+id/tv_standard" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="left" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout>
DateUtil
package com.example.myapplication; import android.annotation.SuppressLint; import android.text.TextUtils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @SuppressLint("SimpleDateFormat") public class DateUtil { // 获取当前的日期时间 public static String getNowDateTime(String formatStr) { String format = formatStr; if (TextUtils.isEmpty(format)) { format = "yyyyMMddHHmmss"; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date()); } // 获取当前的时间 public static String getNowTime() { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); return sdf.format(new Date()); } // 获取当前的时间(精确到毫秒) public static String getNowTimeDetail() { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); return sdf.format(new Date()); } public static String getNowDate() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); return sdf.format(new Date()); } public static String getDate(Calendar calendar) { Date date = calendar.getTime(); // 创建一个日期格式化的工具 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 将当前日期时间按照指定格式输出格式化后的日期时间字符串 return sdf.format(date); } public static String getMonth(Calendar calendar) { Date date = calendar.getTime(); // 创建一个日期格式化的工具 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); // 将当前日期时间按照指定格式输出格式化后的日期时间字符串 return sdf.format(date); } public static Date formatString(String strTime) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { date = sdf.parse(strTime); } catch (Exception e) { e.printStackTrace(); } return date; } }
MainActivity
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private final static String TAG = "BroadStandardActivity"; // 这是广播的动作名称,发送广播和接收广播都以它作为接头暗号 private final static String STANDARD_ACTION = "com.example.chapter09.standard"; private TextView tv_standard; // 声明一个文本视图对象 private String mDesc = "这里查看标准广播的收听信息"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_standard = findViewById(R.id.tv_standard); tv_standard.setText(mDesc); findViewById(R.id.btn_send_standard).setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.btn_send_standard) { Intent intent = new Intent(STANDARD_ACTION); // 创建指定动作的意图 sendBroadcast(intent); // 发送标准广播 } } private StandardReceiver standardReceiver; // 声明一个标准广播的接收器实例 @Override protected void onStart() { super.onStart(); standardReceiver = new StandardReceiver(); // 创建一个标准广播的接收器 // 创建一个意图过滤器,只处理STANDARD_ACTION的广播 IntentFilter filter = new IntentFilter(STANDARD_ACTION); registerReceiver(standardReceiver, filter); // 注册接收器,注册之后才能正常接收广播 } @Override protected void onStop() { super.onStop(); unregisterReceiver(standardReceiver); // 注销接收器,注销之后就不再接收广播 } // 定义一个标准广播的接收器 private class StandardReceiver extends BroadcastReceiver { // 一旦接收到标准广播,马上触发接收器的onReceive方法 @Override public void onReceive(Context context, Intent intent) { // 广播意图非空,且接头暗号正确 if (intent != null && intent.getAction().equals(STANDARD_ACTION)) { mDesc = String.format("%s\n%s 收到一个标准广播", mDesc, DateUtil.getNowTime()); tv_standard.setText(mDesc); } } } }
标签:String,format,sdf,SimpleDateFormat,Broadcast,收发,广播,import,new 来源: https://www.cnblogs.com/xiaobaibailongma/p/16487705.html