我想知道音量是否已经改变.阅读其他帖子我发现这段代码可以注册一个ContentObserver,并在发生变化时获取一个事件.
我的问题是我不知道如何知道改变了什么.我的意思是,我得到一个OnReceive(),但是如何获得额外的信息(例如,按下了什么音量键).
我也收到很多不需要的事件,例如,单击“菜单”按钮也会触发此事件,但尚未发生任何变化(尚未).
这是我的代码.
谢谢
public class clsSettingsContentObserver extends ContentObserver{ public Context Contexto=null; //This is for displaying Toasts public clsSettingsContentObserver(Handler handler) { super(handler); } @OverrIDe public boolean deliverSelfNotifications() { return super.deliverSelfNotifications(); } @OverrIDe public voID onChange(boolean selfChange) { super.onChange(selfChange); //How do I get more info here????? ShowToast("Settings change detected"); } private voID ShowToast(String strMensaje) { Toast toast1 = Toast.makeText(Contexto, strMensaje, Toast.LENGTH_SHORT); toast1.show(); };}
这就是我注册它的方式:
clsSettingsContentObserver oSettingsContentObserver = new clsSettingsContentObserver( new Handler() );oSettingsContentObserver.Contexto = this; //This is for displaying ToastsgetApplicationContext().getContentResolver().registerContentObserver( androID.provIDer.Settings.System.CONTENT_URI, true, oSettingsContentObserver);
解决方法:
使用注册内容观察者
getApplicationContext().getContentResolver().registerContentObserver( androID.provIDer.Settings.System.CONTENT_URI, false, oSettingsContentObserver);
这将阻止来自数据库后代的不需要的通知.有关详细信息,请参见public final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)
总结以上是内存溢出为你收集整理的android – 获取ContentObserver中已更改的内容全部内容,希望文章能够帮你解决android – 获取ContentObserver中已更改的内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)