我使用BroadcastReceiver
在Toast
中显示收到的短信内容。它工作正常。在Toast
中显示内容。但它也会在对话框中显示消息。
并且消息也会进入读状态。任何方式来避免这种情况。
我的BroadcastReceiver
是
public class Receiver extends BroadcastReceiver {
public static final String action = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(action)){
Bundle bundle = intent.getExtras();
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages){
String strMessageFrom = message.getDisplayOriginatingAddress();
String strMessageBody = message.getDisplayMessageBody();
Toast.makeText(context, "From : " +strMessageFrom+"\nBody : "+strMessageBody, Toast.LENGTH_LONG).show();
}
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.realtech.sms_db.Receiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter
android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
答案 0 :(得分:2)
据我了解,问题是“为什么它处于阅读状态”?实施没有任何问题。传入的消息被标记为读取不是因为男女同校,这是因为设备通知设置&#34;自动预览&#34;。这就是为什么你能看到窗口。要禁用&#34;自动预览&#34;按照步骤: -
第1步:转到消息文件夹 第2步:选择菜单(3个点)。 第3步:选择&#34;设置&#34; 第4步:向下滚动到&#34;通知设置&#34; 第5步:选择&#34;通知设置&#34; 步骤6:取消选中&#34;预览消息&#34;。
附近的框希望它对你有所帮助。
答案 1 :(得分:1)
显示AlertDialog.Builder
并使用自定义布局。设置提醒类型TYPE_SYSTEM_ALERT
样品
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setView(yourCustomView);
AlertDialog dialog=builder.create();
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show();