Skip to content

Instantly share code, notes, and snippets.

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSubject);
emailIntent.putExtra(Intent.EXTRA_TEXT, emailContent);
if (emailIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(Intent.createChooser(emailIntent, "Send email ..."));
} else {
if (emailClientNotInstalledCallback != null) {
emailClientNotInstalledCallback.handle();
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/block_user_btn"
android:orderInCategory="90"
android:title="@string/ls_profile_button_block"
app:actionViewClass="android.widget.TextView"
app:showAsAction="never" />
public static String converTime(long timestamp) {
long currentSeconds = getFixedCurrentTime() / 1000;
long timeGap = currentSeconds - timestamp / 1000;// 与现在时间相差秒数
String timeStr = null;
if (timeGap > 24 * 60 * 60 * 365) {// 1天以上
// timeStr = timeGap / (24 * 60 * 60) + "天前";
timeStr = new SimpleDateFormat("yyyy年MM月dd日").format(new Date(timestamp));
} else if (timeGap > 24 * 60 * 60) {
timeStr = new SimpleDateFormat("MM月dd日").format(new Date(timestamp));
if (timeStr.startsWith("0")) {
var c = Calendar.getInstance()
c.timeInMillis = System.currentTimeMillis()
val hour = c.get(Calendar.HOUR_OF_DAY)
val minute = c.get(Calendar.MINUTE)
TimePickerDialog(context, TimePickerDialog.OnTimeSetListener { _, _, _ ->
}, hour, minute, true).show()
@dingbuoyi
dingbuoyi / Three types of State LiveData
Last active October 19, 2021 06:34
四种不同的方法封装带网络状态的LiveData
// 实现一
# 状态类
sealed class Resource<T>(
val data: T? = null,
val errorCode: Int? = null
) {
class Success<T>(data: T) : Resource<T>(data)
class Loading<T>(data: T? = null) : Resource<T>(data)
class DataError<T>(errorCode: Int?) : Resource<T>(null, errorCode)