安卓历史内容观察者
我实现了历史记录的内容观察者,但行为很奇怪.对于历史上的每一个变化,其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); } } 我还使用 注册了我的观察者 BrowserOberse
0 2024-04-03
编程技术问答社区
如何检测安卓设备中的新应用
我想检测用户何时安装或删除应用程序,但我找不到这样做的BroadcastReceiver. 在我的应用程序中,我可以通过类PackageManager获得有关已安装应用程序的信息,但是我不想定期扫描应用程序.有什么BroadcastReceiver这样做吗?还是任何ContentObserver?是否可以通知已安装或删除应用程序? 解决方案 您可以使用Intent.ACTION_PACKAGE_ADDED进行注册BroadcastReceiver(以及必要时Intent.ACTION_PACKAGE_REMOVED和/或Intent.ACTION_PACKAGE_CHANGED).例如, void registerReceiver() { IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_
2 2024-04-03
编程技术问答社区
ContentObserver与BroadCastReceiver:电池用量、内存、CPU?
由于应用程序的电池使用情况,RAM和CPU的使用情况非常需要,因此多个ContentObservers与多个Broadcastreceivers的费用是多少? 示例1: 使用start_sticky使用5个contentobservers运行的服务 正确注册/未正确注册. 示例2: 从清单中设置的5个广播员发射了一项服务. 示例3: 使用5个注册的使用start_sticky运行的服务 broadcastrecevers. 观察者和接收器之间的电池使用情况/RAM/CPU的真正差异是什么?有没有专业人士的声音?我假设1个实例不会有太大的不同,但是让以上示例同时运行. 解决方案 Service运行vs no Service运行 每个应用当您的应用程序运行时启动.该过程至少使用一些内存,人们喜欢使用任务杀手来释放该过程,尽管一旦实际需要存储,Android会自动这样做.对于Service案例,这个内存绝对是一个缺点. CPU/电池使用
0 2024-04-03
编程技术问答社区
安卓:使用ContentObserver或接收器抓取外发短信不工作
我试图使用内容观察者来捕获传出的SMS事件. //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 SMSoutObserv
0 2024-04-03
编程技术问答社区
观察Audio.Media.EXTERNAL_CONTENT_URI的Android内容观察器的变化
我正在开发一个Android应用程序,其中我必须在其中检测具有文件名,文件路径和操作的音频文件的Android SD卡中的更改.例如,如果我在SD卡中添加文件,那么我想知道 添加的文件的名称 文件的路径 操作 - 添加 以前我已经尝试过文件观察者,但是为此,我必须在每个目录上应用它.因此,我搜索了其他一些解决方案,并获得了有关 audia.media.external_content_uri 的信息.然后我创建了一个像这样的观察者 uriobserver.java-这是一个内容观察者 class UriObserver extends ContentObserver { public UriObserver(Handler handler) { super(handler); // TODO Auto-generated constructor stub } @Override public
FIleObserver和ContentObserver在Android Marshmallow中不工作
我对 fileObserver 和 contentObserver 都不在Android Marshmallow中有问题.我正在使用此内容来检测文件夹中发生的更改.我设置了棉花糖的运行时间权限.但是之后,也没有显示任何事件.它可以在其他版本中完美地工作.请帮助我解决这个问题. 首先,我尝试了在内部服务中的内容解析器来检测背景中的文件夹更改. public class TestService extends Service { @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { initial(); return START_STICKY; } public v
ContentObserver和DatasetObserver之间的区别?
ContentObserver和DatasetObserver? 有什么区别 应使用一个或另一个时? 我获得了单行Cursor.我想通知数据更改 - 例如.当行更新时. 我应该注册哪个观察者? 解决方案 如果您使用的是ContentProvider(通过ContentResolver或Activity.managedQuery())获取数据,只需将ContentObserver附加到Cursor上即可.每当ContentResolver广播与光标关联的Uri的通知时,onChange()中的代码都会被调用. Cursor myCursor = managedQuery(myUri, projection, where, whereArgs, sortBy); myCursor.registerContentObserver(new ContentObserver() { @Override public void onChange(boole
2 2024-02-13
编程技术问答社区
如果手机(本地)中存在多条未读短信,如何从本地(手机)中获得已读短信的通知?
如果本机(电话)中存在3个未读的SMS消息,并且用户已阅读其中一条SMS.如何识别我们应用程序中(从本机)读取哪些SM. 当前,当用户从本机读取SMS(电话)时,我正在使用ContentObserver和OnChange()方法. 我能够获取所有未读的SMS消息: Cursor cursor = this.getContentResolver().query(Uri.parse("content://sms/"), null, "read = 0", null, null); 如何识别从本机读取哪些SM(电话).任何帮助或指导都将不胜感激. 在Nexus 4(Android 4.3)中 - API 18),如果通知(在设备状态栏中),则针对Android Native SMS客户端中的两个未读SMS(属于两个不同的发送者),用户单击该通知,onChange(context,uri,uri,uri,uri,uri )在我的Aaplication中被调用,在其中,
2 2024-02-13
编程技术问答社区
在旧版本的API上,在ContentObserver Onchange上获得改变的URI
可能的重复: 如何在我的内容中获取插入的行中的URI观察者? 我正在使用contentobserver聆听内容提供商的更改.但是,我想知道当调用Onchange方法时是否有一种方法可以获取更改的URI(而不是在回调内进行搜索查询以找出发生了什么变化). API级别16似乎是可能的,但是我必须编写一个API 8兼容的应用程序= S 解决方案 好吧,后来我发现了在其他地方发布的同样的问题,但仍然没有答案,这使我认为无法在较旧的API上更改URI.
6 2024-02-13
编程技术问答社区
如何处理REST调用、数据持久性、同步和观察ContentProvider
我知道这个问题已经被问到太多了,但是我认为我要定位的问题有些不同,也许更复杂. 我将开发一个使用 Restful Web服务的应用程序,需要有以下要求: 该应用程序应在列表和详细信息中显示一些书籍,他们的作者及其编辑 该应用程序还应允许搜索一本书 书籍,作者和编辑是从RESTFUL Web服务中获取的 每个实体都必须被缓存,以便当我打开一个活动时,我首先看到旧数据(如果有),而新的数据则是从网络中更新的. 每次实体更新时,都应通知有关方(ContentObserver?常规Listener实施?) 如果呼叫已经执行(对api/books/1337或api/editors),则应通知呼叫者它正在加载数据,并应给予旧数据(如果存在),就好像它一样是原始的来电者. 应每分钟(用户决定)进行一些数据(只有书籍和作者),并且应通知观察者(SyncAdapter?) 问题: 观看并研究了所有组件后Virgil Dobjanschi在Goog
当且仅当ContactsContract.Contacts.CONTENT_URI发生变化时,ContentObserver应该调用。
我的应用程序使用android.provider.ContactsContract.Data(API> 11)和ContactsContract.Contacts.CONTENT_URI(API Contacts. 我试图registerContentObserver()针对这些提供商.但是,即使我在打电话后立即试图从设备打电话给某人,它也会称呼我的ContentObserver.它确实触发了我的ContentObserver,这对我没有用,因为Contacts Provider中没有内容更改. 根本原因: 看起来像LAST_TIME_CONTACTED或ContactsContract.Contacts.CONTENT_URI中的某些东西在通过设备进行呼叫时会更改,而ContentObserver合法wok. . 尝试过: private class ContactsContentObserver extends ContentObserver {
4 2024-02-13
编程技术问答社区
用于监听联系人变化的内容观察者
我真的不明白为什么内容观察者会听取与联系信息无关的更改. 我只是注册到我想听更改的URI: getContentResolver().registerContentObserver(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, true, contactsObserver); 但是,在打电话给某人或发短信给某人之后,它会触发contentObserver中的on Change方法.因此,我需要与我的应用程序重新同步所有联系人列表,尽管我不需要. 只有我感兴趣的字段: contactscontract.commondatakinds.phone.contact_id contactscontract.commondatakinds.phone.display_name contactscontract.commondatakinds.phone.number 我应该实施什么样的更改来聆听此DB项
4 2024-02-13
编程技术问答社区
如何收听地址簿中插入/更新/删除的联系人
有很多与之相关的问题,但它们都没有帮助我获得解决方案. 我试图同步从设备到远程服务器的所有联系人,并能够轻松执行此操作,但是当触点发生更改时,例如update/delete/insert(新联系人)无法找到解决方案. 尝试使用ContentObserver,但是onChange()被多次调用.很难找到联系人更改数据. public class ContactService extends Service { private int mContactCount; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); mContactCount = getContactCount();
4 2024-02-13
编程技术问答社区
如何使我的Android ContentObserver for ContactsContract检测到一个新增、更新或删除的联系人?
我能够收到通用通知,"联系人DB发生了更改",但我想知道已插入,更新或删除的特定记录.以下是已注册并获取Onchange通知的代码.不幸的是,这并不具体,这使我的处理详尽且效率低下. 这是代码存根: if ((mNativeContactsObserver == null) && (mHandler == null)) { mHandler = new Handler(this.getMainLooper()) { }; mNativeContactsObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { super.onChange(selfC
4 2024-02-13
编程技术问答社区
安卓5(Lollipop)上chrome历史的contentObserver中没有触发安卓onChange事件
我注意到,我的Chrome历史记录和书签的内容网已经不再在Android Lolipop上触发.该代码在Android的较旧版本(不管Chrome版本如何)上完美工作,但是在Lollipop上它不再起作用. 我已经对铬提出了一个错误,这在评论中得到了证实. https://code.google.com/p/chromium/chromium/iss/iss/iss/siss/detetail?q=Bogogzchcectebebogzchc.c.cteobzch%40gmecceccecceumpripi; 20ReleaseBlock%20CR%20STATUS%20 owner%20summary%20OS%20 Modified&ID = 435541&感谢= 435541&ts = 1416575883 有人找到了解决方案吗? le: 感谢Fuong Lee的解决方法,在添加内容观察者开始启动之后,请致电此方法: private boolean chec
2 2024-02-12
编程技术问答社区
contentobserver只对插入和删除起作用,但对更新不起作用。
我正在开发一个应用程序,该应用在任何标记为读取的SMS时都会通知用户,即使该应用不运行 我只是创建了一个ContentObserver,然后将其注册到服务 问题是,如果新的SMS插入或删除了contentObserver,则在标记为读取的SMS(更新操作)时,它不起作用 这是我的服务代码 public class Smssendservice extends Service { private static Timer timer = new Timer(); private Context ctx; public IBinder onBind(Intent arg0) { return null; } public void onCreate() { super.onCreate(); ctx = this; startServi
6 2024-02-12
编程技术问答社区
从ContentObserver获取触发器
有没有办法说明为什么要触发contentobserver?例如,如果我通过" content://sms" 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(n
6 2024-02-11
编程技术问答社区
每行内容观察者的实现
在"观察"有关contentobserver的"观察"之后,我注意到API 16之前的Onchange没有传递任何参数,因此我决定将其实现到项目上的每一行(该项目正在使用Build-In-In下载Manager下载URL) ) > 对于每一行,我都在创建一个新的ContentObserver: Uri downloadsContentUri = Uri.parse("content://downloads/my_downloads/downloads/" + appDownloadId); DownloadsObserver downloadsObserver = new DownloadsObserver(downloadId, new Handler()); getContentResolver().registerContentObserver(downloadsContentUri, true, downloadsObserver); 您可
2 2024-02-11
编程技术问答社区
如何使ContentObserver在没有打开应用程序的情况下工作?
我需要让我的申请收听Android中的通讯录的更改.我已经读到可以使用ContentObserver进行操作,并聆听ContactsContract.Contacts中的更改.关闭应用程序时,ContentObserver的生命周期似乎结束了. 即使没有打开应用程序,我如何使ContentObserver工作? 解决方案 即使没有打开应用程序,我如何使ContentObserver工作? 这是不可能的. A ContentObserver背后的点是要通知可能影响运行应用程序的更改,例如需要反映在显示该数据的活动中的数据的更改.如果您的应用程序未运行,则不能有ContentObserver. 其他解决方案 在OnstartCommand中注册您的内容观察者,而不是在on Create中注册它.它对我有用. @Override public int onStartCommand(Intent intent, int flags, int startI
6 2024-02-11
编程技术问答社区
捕捉已发送的短信(安卓2.2)。
我知道这里有几个问题与此有关,但是它们都没有帮助我实现这一工作 - 捕获发送的SMS. 我在三星手机上使用Android 2.2(Froyo)(如果以某种方式很重要). 我已经在Stackoverflow上搜索了很多东西,并意识到我需要ContentObserver为了我的要求.我使用的是服务而不是活动,所以我在Service类中注册了ContentObserver,看起来像这样: public class SMSSending extends Service { private class MyContentObserver extends ContentObserver { public MyContentObserver() { super(null); } @Override public void onChange(boolean selfChange) { super.onChange(self
6 2024-02-09
编程技术问答社区