Android 在桌面显示对话框

xiaoxiao2021-02-28  119

项目地址 https://github.com/OOCZC/Android_SpamMess

需求:当来新短信时,即便在桌面或其他App界面时,也能弹出对话框。

思路:App接收短信广播,然后在BroadcastReceiver的onReceive中用intent打开主题为对话框的Activity。

先实现接收短信广播:

在AndroidManifest.xml中添加权限,注册广播,注册新Activity为对话框主题。

<uses-permission android:name="android.permission.RECEIVE_SMS" /> <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <activity android:name=".Dialog_Activity" android:theme="@style/Theme.AppCompat.Dialog"/>

在广播的onReceive中启动Dialog_Activity

MyReceiver.java (extend BroadcastReceiver)

Intent intent1 = new Intent(); intent1.setClass(context,Dialog_Activity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 设置为Intent.FLAG_ACTIVITY_NEW_TASK,必要 intent1.putExtra("number", "" + msg.getOriginatingAddress()); intent1.putExtra("body", "" + msg.getDisplayMessageBody()); this.abortBroadcast(); //结束此广播,不再继续传给其他App context.startActivity(intent1);

附:接收新短信,用于启动Activity的广播MyReceiver

public class MyReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { // an Intent broadcast. Bundle bundle = intent.getExtras(); SmsMessage msg = null; if (null != bundle) { Object[] smsObj = (Object[]) bundle.get("pdus"); for (Object object : smsObj) { msg = SmsMessage.createFromPdu((byte[]) object); Date date = new Date(msg.getTimestampMillis());//时间 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String receiveTime = format.format(date); System.out.println("number:" + msg.getOriginatingAddress() + " body:" + msg.getDisplayMessageBody() + " time:" + msg.getTimestampMillis()); } } Intent intent1 = new Intent(); intent1.setClass(context,Dialog_Activity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent1.putExtra("number", "" + msg.getOriginatingAddress()); intent1.putExtra("body", "" + msg.getDisplayMessageBody()); this.abortBroadcast(); context.startActivity(intent1); } }
转载请注明原文地址: https://www.6miu.com/read-62430.html

最新回复(0)