最近在修改class="tags" href="/tags/ANDROID.html" title=android>android的锁屏时间,发现在settings里只有读写数据库的接口,却没发现这些值究竟是怎么起作用的
最后全局搜索,才发现会在phonewindow里用ContentObserver来对setting.db做监听
测试了个小APK来验证,证实是这样的
附件中为具体源码(附件后缀要修改rar),下面贴出来如下:
ContentobserveActivity.java
package com.class="tags" href="/tags/ANDROID.html" title=android>android;
import class="tags" href="/tags/ANDROID.html" title=android>android.app.Activity;
import class="tags" href="/tags/ANDROID.html" title=android>android.content.ContentResolver;
import class="tags" href="/tags/ANDROID.html" title=android>android.database.ContentObserver;
import class="tags" href="/tags/ANDROID.html" title=android>android.os.Bundle;
import class="tags" href="/tags/ANDROID.html" title=android>android.os.Handler;
import class="tags" href="/tags/ANDROID.html" title=android>android.provider.Settings;
import class="tags" href="/tags/ANDROID.html" title=android>android.util.Log;
import class="tags" href="/tags/ANDROID.html" title=android>android.view.View;
import class="tags" href="/tags/ANDROID.html" title=android>android.view.View.OnClickListener;
import class="tags" href="/tags/ANDROID.html" title=android>android.widget.EditText;
public class ContentobserveActivity extends Activity implements OnClickListener {
String TAG="sano";
Handler mHandler;
SettingsObserver Observer;
private EditText eSetting;
private EditText eShow;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.class="tags" href="/tags/LAYOUT.html" title=layout>layout.main);
init_ui();
mHandler = new Handler();
Observer =new SettingsObserver(mHandler);
Observer.registerobserves();
}
public void init_ui(){
eSetting = (EditText) findViewById(R.id.editText1);
eShow = (EditText) findViewById(R.id.editText2);
findViewById(R.id.button1).setOnClickListener(this);
}
class SettingsObserver extends ContentObserver {
@Override
public boolean deliverSelfNotifications() {
Log.d(TAG,"deliverSelfNotifications");
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
Log.d(TAG,"onChange");
}
SettingsObserver(Handler handler) {
super(handler);
}
public void registerobserves(){
Log.d(TAG,"registerobserves");
ContentResolver resolver = getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_OFF_TIMEOUT), false, this);
}
}
@Override
public void onClick(View v) {
Log.d(TAG,"write "+eSetting.getText().toString());
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_OFF_TIMEOUT, Integer.parseInt(eSetting.getText().toString()));
}
}
main.xml
<?xml version="1.0" class="tags" href="/tags/ENCODING.html" title=encoding>encoding="utf-8"?>
<LinearLayout xmlns:class="tags" href="/tags/ANDROID.html" title=android>android="http://schemas.class="tags" href="/tags/ANDROID.html" title=android>android.com/apk/res/class="tags" href="/tags/ANDROID.html" title=android>android"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_width="match_parent"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_height="match_parent"
class="tags" href="/tags/ANDROID.html" title=android>android:baselineAligned="false"
class="tags" href="/tags/ANDROID.html" title=android>android:orientation="vertical" >
<TextView
class="tags" href="/tags/ANDROID.html" title=android>android:id="@+id/textView1"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_width="wrap_content"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_height="wrap_content"
class="tags" href="/tags/ANDROID.html" title=android>android:text="设置系统锁屏时间" />
<EditText
class="tags" href="/tags/ANDROID.html" title=android>android:id="@+id/editText1"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_width="244dp"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_height="wrap_content" >
</EditText>
<Button
class="tags" href="/tags/ANDROID.html" title=android>android:id="@+id/button1"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_width="wrap_content"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_height="wrap_content"
class="tags" href="/tags/ANDROID.html" title=android>android:text="设置" />
<EditText
class="tags" href="/tags/ANDROID.html" title=android>android:id="@+id/editText2"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_width="match_parent"
class="tags" href="/tags/ANDROID.html" title=android>android:class="tags" href="/tags/LAYOUT.html" title=layout>layout_height="wrap_content" />
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" class="tags" href="/tags/ENCODING.html" title=encoding>encoding="utf-8"?>
<manifest xmlns:class="tags" href="/tags/ANDROID.html" title=android>android="http://schemas.class="tags" href="/tags/ANDROID.html" title=android>android.com/apk/res/class="tags" href="/tags/ANDROID.html" title=android>android"
package="com.class="tags" href="/tags/ANDROID.html" title=android>android"
class="tags" href="/tags/ANDROID.html" title=android>android:versionCode="1"
class="tags" href="/tags/ANDROID.html" title=android>android:versionName="1.0" >
<uses-sdk class="tags" href="/tags/ANDROID.html" title=android>android:minSdkVersion="9" />
<uses-permission class="tags" href="/tags/ANDROID.html" title=android>android:name="class="tags" href="/tags/ANDROID.html" title=android>android.permission.WRITE_SETTINGS" />
<uses-permission class="tags" href="/tags/ANDROID.html" title=android>android:name="class="tags" href="/tags/ANDROID.html" title=android>android.permission.WRITE_SECURE_SETTINGS" />
<class="tags" href="/tags/APPLICATION.html" title=application>application
class="tags" href="/tags/ANDROID.html" title=android>android:icon="@drawable/ic_launcher"
class="tags" href="/tags/ANDROID.html" title=android>android:label="@string/app_name" >
<activity
class="tags" href="/tags/ANDROID.html" title=android>android:label="@string/app_name"
class="tags" href="/tags/ANDROID.html" title=android>android:name=".ContentobserveActivity" >
<intent-filter >
<action class="tags" href="/tags/ANDROID.html" title=android>android:name="class="tags" href="/tags/ANDROID.html" title=android>android.intent.action.MAIN" />
<category class="tags" href="/tags/ANDROID.html" title=android>android:name="class="tags" href="/tags/ANDROID.html" title=android>android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</class="tags" href="/tags/APPLICATION.html" title=application>application>
</manifest>