我想通过contentObserver阻止SMS.为此,我想先获取SMS的电话号码.我该怎么做才能获得数字?这是我拥有的代码,仅计算短信的数量. package com.SMSObserver4; import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.provider.Contacts; import android.provider.Contacts.People.Phones; public class SMSObserver4 extends Activity { /** Called when the activity is f
以下是关于 contentobserver 的编程技术问答
我试图在m子上实现一个简单的消息观察者,而不需要突变消息. 这个 link 文档上的链接是扩展AbstractMessageObserver.但是,正如我在那么,现在这样做的最佳方法是实现MessageProcessor界面,并简单地返回过程方法中的muleevent param? 解决方案 如果您需要访问整个MuleEvent,则A MessageProcessor或实现Callable的POJO. 否则,如果您只需要观察有效载荷,那么简单的POJO组件就可以解决问题. 请注意,m子还提供拦截器(和InterceptingMessageProcessor s):如果需要在操作之前/之后运行,或者如果您希望有可能停止处理. ,请使用拦截器.
我正在使用contentobserver聆听联系人数据库中的更改.现在,我意识到,即使我没有对联系人进行任何更改,onChange()方法也会随机调用.我怀疑这与自动触点同步有关(即使此时没有真正的更改). 只有在用户进行的联系人进行真正的更改时,才有可能获得通知? thx simon public class ContactsObserver extends ContentObserver { private final static String TAG = ContactsObserver.class.getSimpleName(); private Context ctx; private List listeners = new ArrayList(); private ContactsObserver(Context ctx) { super(new
如果联系数据库有任何更改(添加,删除),我想在手机上获取通知.现在,我使用contentObserver获取通知.遵循我的代码.问题是我无法能够知道更改了哪个联系人.有人可以帮助吗? public class ContentObserverActivity extends Activity { Button registerbutton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerbutton=(Button)findViewById(R.id.button1); registerbutton.setOnClickListener(new OnClickListener(
我已经实现了历史内容观察者,但它表现得很奇怪.对于历史上的每个变化,它的onchange()函数运行3-5次. static class BrowserOberser extends ContentObserver { public BrowserOberser() { super(null); } @Override public boolean deliverSelfNotifications() { return true; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d("History", "onChange: " + selfChange); } } 我也使用 注册了我的观察者 BrowserObers
由于应用程序的电池用量,RAM和CPU使用率存在如此需要,因此多个ContentObServers与多个Broadcasteceivers的费用是什么? 示例1: 使用start_sticky使用5 contentObservers运行的服务 正确注册/未注册. 示例2: 从清单中设置的5个Broadcastreceivers发射. 示例3: 使用5注册使用start_sticky运行的服务 Broadcastreceivers. 观察者和接收器之间的电池使用/RAM/CPU的真正差异是什么?任何专业人士都可以在这个上唱歌吗?我假设1个实例不会产生大量差异,但是让我们拍摄上面的例子5次运行一次. 解决方案 Service运行vs no Service运行 每个应用程序至少有一个 Process 那个在您的应用程序运行时启动.该过程至少使用一些内存,人们喜欢使用任务杀手来释放,但虽然Android在实际需要内存一旦需要自动执行.此内存
我想检测用户何时安装或删除应用程序,我没有找到它的BroadcastReceiver. 在我的应用中,我通过类PackageManager获取有关已安装的应用程序的信息,但我不想定期扫描应用程序.是否有任何BroadcastReceiver这是什么?或任何ContentObserver?是否可以获得应用程序已安装或删除的通知? 解决方案 您可以使用Intent.ACTION_PACKAGE_ADDED(以及如果需要,以及Intent.ACTION_PACKAGE_REMOVED和/或Intent.ACTION_PACKAGE_CHANGED)注册BroadcastReceiver).例如, void registerReceiver() { IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE
我试图使用内容观察者捕获外出的短信事件. //TEST OBSERVER ContentObserver co = new SMSoutObserver(new Handler(), getApplicationContext()); ContentResolver contentResolver = getApplicationContext().getContentResolver(); contentResolver.registerContentObserver(Uri.parse("content://sms/out"),true, co); // END TEST OBSERVER 和 public class SMSoutObserver extends ContentObserver { private Context mCtx; public SMSoutObserver
这是我注册一个contentobserver来收听已发送的SMS的方式: SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler(), context)); ContentResolver contentResolver = context.getContentResolver(); contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsObeserver); 这是sendsmsobserver类: class SendSmsObserver extends ContentObserver { private Context context; SendSmsObserver(Handler handler, Context context) { super(handler); thi
我正在尝试收听传出的SMS消息.我正在遵循接受的答案在这里,但它不起作用.我不确定我出错了哪里.我对内容观察者根本不熟悉,所以请原谅我的无知. 我想在服务中创建它,以便它一直运行.这是我在该服务中的代码: import android.app.Service; import android.content.ContentResolver; import android.content.Intent; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.os.IBinder; import android.util.Log; public class SmsOutgoingObserver extends Service { public Sms
当我想实现卷更改检测时,我遇到了一个问题. 由于必须通过服务在后台检测更改检测,因此我无法拦截卷键按下. 我已经尝试了ContentObserver来收听卷设置的更改,但没有起作用. 但是我已经挖了一点,发现当我这样注册时,我的contentobserver检测到卷的变化: this.getApplicationContext().getContentResolver().registerContentObserver( android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver ); 我尝试更改第一个参数 - 如果我理解正确的话,请聆听设置的URI.但是我什么也没取得成就.那么,如何完成呢?我不想在每个设置上更新我的UI(我将SeekBar设置为某些positin). 那么,如何注册内容观察者来收听媒体卷的更改? 这是ContentObserve
我知道这个问题已经多次问,但是没有人能想出我所看到的工作答案. im在应用程序上工作以拦截文本消息,并取决于发送#,以自定义警报弹出.我可以与广播接收器一起工作,但是,如果用户安装了GOSM,则永远不会称呼GOSMS在达到我的应用程序之前将其删除. 为了解决这个问题,我在content://sms/上尝试一个内容观察者 它的工作正常,但是onChange()被称为两次,具有完全相同的参数.我试图检查时间戳,但它们与我设置的类型和其他所有参数一样. 从我所看到的,这是一个普遍的问题,但我所见过的任何地方都没有回答. @Override public void onChange(boolean selfChange) { super.onChange(selfChange); querySMS(); } protected void querySMS() { Cursor cur = getContentResolver().quer
在"观察"之后关于ContentObserver我注意到在API 16之前未传递任何参数之前的ondchange,因此我决定将其实施到我的项目上的每一行(项目正在下载URL的URL,在DownloadManager中下载URL) 每行我正在创建一个新的contentobserver: Uri downloadsContentUri = Uri.parse("content://downloads/my_downloads/downloads/" + appDownloadId); DownloadsObserver downloadsObserver = new DownloadsObserver(downloadId, new Handler()); getContentResolver().registerContentObserver(downloadsContentUri, true, downloadsObserver); ,正如您可以看
我需要让我的应用程序侦听Android中的地址簿的更改.我已经读到它可以使用ContentObserver完成,并在ContactsContract.Contacts中侦听更改.当应用程序关闭时,似乎ContentObserver的生命周期结束. 如何使ContentObserver即使未打开应用程序也是如此? 解决方案 如何使ContentObserver即使未打开应用程序也是如此? 是不可能的. ContentObserver后面的点应通知可能影响运行应用程序的更改,例如对需要在显示数据的活动中反映的数据的更改.如果您的应用程序未运行,则不能具有ContentObserver. 其他解决方案 将内容观察者注册到onstartcommand中使用return START_STICKY;,而不是在oncreate中注册它.它适合我. @Override public int onStartCommand(Intent intent, int fl
嗨,我正在尝试使用以下代码.内容解析器不使用此操作.任何人都给出一个想法 getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI,true, new ContentObserver(new Handler()){ @Override public void onChange( boolean selfChange){ showDialog(); } @Override public void onChange(boolean selfChange, Uri uri) { // Handle change. showDialog(); } }); 提前感谢 解决方案 a ContentObserver仅适用于调用 ContentResolver 在提供程序的内容更改时的notif
有没有办法讲述为什么触发ContentObserver?例如,如果我通过"内容://短信"URI和SMS发送或接收到SMS,则有一种方法可以在ContentObserver类中推断,SMS类型是什么(我知道我可以设置n ContentObServers,指定不同的URI,但我希望从ContentObserver类中判断出一种方法)? 奖金:还有一个有趣的微妙性: 第二种方法仅从API级别16开始,因此代码不应依赖于URI正常工作. contentobserver: ContentResolver contentResolver = getBaseContext().getContentResolver(); contentResolver.registerContentObserver(Uri.parse("content://sms"), true, new MessageObserver(new Handler(), g
我注意到,我的Chrome历史记录和书签的内容不再在Android Lolipop上触发.该代码在Android的较旧版本(不论镀铬版本)上完美运行,但是在Lollipop上它不再起作用. 我已经对铬提出了一个错误,这在评论中得到了证实. https://code.google.com/p/chromium/chromium/iss/iss/iss/siss/detetail/detetail?q=Bogogzchc.ctebogzchc.chchismcolpeccececcececcepi%20M%%20M; 20ReleaseBlock%20Cr%20Status%20 owner%20 summary%20OS%20 Modified&id = 435541&感谢= 435541&ts = 1416575883 有人找到了解决方案吗? le: 感谢Fuong Lee的解决方法,在添加内容观察者开始启动之后,请致电此方法: private boolean c
我知道这个问题已经被问到了太多次,但我认为我想要瞄准的问题有点不同,也许更复杂. 我将开发一个使用 restful web服务的应用程序,并且需要具有以下要求: 应用程序应在列表中显示一些书籍,他们的作者及其编辑和详细 该应用程序还应该允许搜索 书籍,作者和编辑从RESTful Web服务中获取 必须缓存每个实体,以便当我打开活动时,我先看到旧数据(如果有的话),而来自网络的新一个更新. 每次Entity正在更新时,都应通知有感兴趣的各方(ContentObserver?常规Listener实现?) 如果呼叫已经执行(例如,对api/books/1337或到api/editors),应通知呼叫者它是加载数据,并且应该给出旧的(如果存在),仿佛它是原来的呼叫者. 一些数据(仅书籍和作者)应该每n分钟更新(用户决定),并且应该通知观察者(SyncAdapter?) 问题: 观看并研究所有组件由Virgil Dobjanschi在Go
我正在使用Callbacks将应用从LoaderManager迁移到使用ViewModel和LiveData的实现.我想继续使用现有的SQLiteDatabase. 主要实现工作正常. Activity实例化ViewModel,并创建一个更新View如果它观察到在ViewModel中的MutableLiveData中的变化. ViewModel通过使用ContentProvider通过查询从SQLiteDatabase获取数据(光标). 但我有其他活动可以对数据库进行更改,而MainActivity停止但未被销毁.还有一个后台服务,可以在MainActivity位于前台时对数据库进行更改. 其他活动和后台服务可以在数据库中更改值,因此可以对ViewModel中的MutableLiveData具有效果. 我的问题是:如何观察SQLiteDatabase的变化,以更新LiveData? 这是MainActivity: 的简化版本 public class M
我面临着一个奇怪的问题,我正在使用ContentObserver来捕获联系人的变化,但问题是即使我没有做出任何改变,也称为onchange()方法.这是我的代码: getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, new MyCOntentObserver()); public class MyCOntentObserver extends ContentObserver{ public MyCOntentObserver() { super(null); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log