Android手机在信息读取后才检测到彩信
我正在使用Xamarin在C#中创建一个Android应用程序,我不明白为什么我的ContentObserver,Android手机在信息读取后才检测到彩信,android,xamarin.forms,xamarin.android,Android,Xamarin.forms,Xamarin.android,我正在使用Xamarin在C#中创建一个Android应用程序,我不明白为什么我的ContentObserver,MMSObserver在收到彩信时没有注意到变化,但在阅读彩信后确实注意到变化。当收到彩信时,ContentObserver是否可以发出通知?如果是,我的代码应该添加/更改什么 MMS观察员: public class MMSObserver : ContentObserver { private readonly Android.Net.Uri _uri; priv
MMSObserver
在收到彩信时没有注意到变化,但在阅读彩信后确实注意到变化。当收到彩信时,ContentObserver是否可以发出通知?如果是,我的代码应该添加/更改什么
MMS观察员:
public class MMSObserver : ContentObserver
{
private readonly Android.Net.Uri _uri;
private static readonly string TAG = "MMS Observer";
public static readonly string MMS_RECEIVED = "MMSObserver.intent.action.MMS_RECEIVED";
public MMSObserver (Android.Net.Uri uri): base(null)
{
_uri = uri;
}
public override void OnChange(bool selfChange)
{
Log.Info(TAG, "Observed a change.");
Task.Run(() => {
Intent mmsIntent = new Intent(MMS_RECEIVED);
AndroidApp.Context.SendBroadcast(mmsIntent);
});
base.OnChange(selfChange);
}
}
主要活动类别:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
// Constants for the MMS Observer.
static readonly Android.Net.Uri MMS_URI = Android.Net.Uri.Parse("content://mms");
// Create the MMS Observer.
MMSObserver mmsObserver = new MMSObserver(MMS_URI);
protected override void OnCreate(Bundle savedInstanceState)
{
// Other code not shown
// Register the MMS Observer to the content resolver.
ContentResolver.RegisterContentObserver(MMS_URI, false, mmsObserver);
ContentResolver.NotifyChange(MMS_URI, mmsObserver);
}
protected override void OnDestroy()
{
ContentResolver.UnregisterContentObserver(mmsObserver);
base.OnDestroy();
}
}
Manifest.xml的代码段:
application android:label="App.Android" android:theme="@style/MainTheme">
<receiver android:name=".MMSReceiver">
<!-- IntentFilterPriority.HighPriority is equal to 1000 -->
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED"/>
<data android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
application-android:label=“App.android”android:theme=“@style/MainTheme”>
AContentObserver
仅适用于ContentProvider
,该提供者在提供者的内容更改时调用。如果ContentProvider
没有调用NotifyChange()
,则ContentObserver
将不会收到有关更改的通知
这意味着您需要手动调用notify方法:
ContentResolver.NotifyChange(MMS_URI, null);
注意:可以是null