Android 发送的短信无法获取特定设备的信息
我收到了几乎所有设备发送和接收的短信。但我无法从特定型号的特定设备上获得它。像三星S7,S8,S9。还有一些LG设备 奇怪的是,有些S7装置能工作,有些不能 下面是我使用的方式 在应用程序类中注册观察者Android 发送的短信无法获取特定设备的信息,android,sms,contentobserver,Android,Sms,Contentobserver,我收到了几乎所有设备发送和接收的短信。但我无法从特定型号的特定设备上获得它。像三星S7,S8,S9。还有一些LG设备 奇怪的是,有些S7装置能工作,有些不能 下面是我使用的方式 在应用程序类中注册观察者 private void registerMessageObserver() { String url = "content://sms/"; Uri uri = Uri.parse(url); this.getApplicationContext()
private void registerMessageObserver() {
String url = "content://sms/";
Uri uri = Uri.parse(url);
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(uri, true,
new MessageObserver(new Handler(), this));
}
//观察员班
import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
public class MessageObserver extends ContentObserver {
private static final String TAG = "MessageObserver";
Context moContext;
// Observe message state incoming or outgoing
public MessageObserver(Handler handler, Context foContext) {
super(handler);
moContext = foContext;
}
@Override
public boolean deliverSelfNotifications() {
Log.i(TAG, "deliverSelfNotifications Changed");
return true;
}
@Override
public void onChange(boolean selfChange) {
Log.i(TAG, "Message Changed");
super.onChange(selfChange);
Log.i(TAG, "Message Changed after super");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && moContext .checkCallingOrSelfPermission(Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED)
return;
String[] laColumns = new String[]{"_id", "type", "address", "body", "date", "person"};
Uri loUriAllMessages = Uri.parse("content://sms/");
Cursor loCursor = moContext.getContentResolver().query(loUriAllMessages, laColumns, null, null, "_id DESC");
if (loCursor != null) {
if (loCursor.moveToFirst()) {
int liMessageId = loCursor.getInt(loCursor.getColumnIndex("_id"));
String lsType = loCursor.getString(loCursor.getColumnIndex("type")).trim();
//Doing my stuff here
}
}
if (loCursor != null)
loCursor.close();
}
}
正如我在大多数设备中所说的,它工作起来很有魅力。但有些设备甚至在更改未调用时也未调用此功能
我尝试了下面的方法,但在任何情况下都不会调用onchange
private void registerMessageObserverSent() {
String url = "content://sms/sent";
Uri uri = Uri.parse(url);
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(uri, true,
new MessageObserverSent(new Handler(), this));
}
private void registerMessageObserverOut() {
String url = "content://sms/out";
Uri uri = Uri.parse(url);
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(uri, true,
new MessageObserverOut(new Handler(), this));
}
我尝试了广播接收器,但接收器仅用于接收消息
任何人都可以帮助解决这些设备的问题
应用程序处于脱机状态,因此play store策略没有问题。这是我个人使用的。我发现你的代码有问题。它不工作的设备的操作系统版本是什么?@Piyush它的各种版本,8.0和9.0,三星SM-G950U(9)@user1241241什么?更奇怪的是,有时非常罕见,我可以收到发送的短信,但仍然是100分之一。在过去的7天里,我收到了两封相同的邮件,但是收到了两封,其他的都收到了。