Android 给Settings 数据库中写值及监听&adb 读取数据库值

adb 获取settings数据库中的值

这里写图片描述

使用Settings 数据库

package com.ybf.utilit;
import android.R;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.provider.Settings;
import android.database.ContentObserver;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity {
    private TextView tv_time;
    Broadcast broadcast;
    ChangeContentObserver mChangeContentObserver = null;
    int i = 0;
    /**
     * 注意:
     * 如果第三方应用是写不到Setting 数据库的,必须需要系统权限
     * AndroidMainfest.xml需添加
     * android:sharedUserId="android.uid.system"
     * 
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_item);
        tv_time = (TextView) findViewById(R.id.text1);
        // 广播动态改变Setting中值
        broadcast = new Broadcast();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.setting");
        intentFilter.addAction("com.com");
        registerReceiver(broadcast, intentFilter);
        // 注册监听者
        mChangeContentObserver = new ChangeContentObserver();
        getContentResolver().registerContentObserver(Settings.Global.getUriFor("com.ybf"), true, mChangeContentObserver);
    }
    class Broadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("com.setting")) {
                if (i % 2 == 0) {
                    setdata(context, 0);
                    Log.e("TAG", "[onrece]set>=0");
                    i++;
                } else {
                    setdata(context, 1);
                    Log.e("TAG", "[onrece]set>=1");
                    i++;
                }
            } else if (intent.getAction().equals("com.com")) {
                Log.e("TAG", "[onrece]>getRecorderRear>" + getdata(context));
            }
        }
    }
    /*
     * 监听值变化
     */
    class ChangeContentObserver extends ContentObserver {
        public ChangeContentObserver (Handler handler) {
            super(handler);
        }
        public ChangeContentObserver () {
            // TODO Auto-generated constructor stub
            super(new Handler());
        }
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Log.d("TAG", "ChangeContentObserver --> onChange(" + selfChange + ") ");
        }
    }
    //Setting 数据库中写值
    public static void setdata(Context cxt, int flag) {
        try {
            Settings.Global.putInt(cxt.getContentResolver(), "com.ybf", flag);
        } catch (Exception e) {
            if (e != null) {
                Log.i("TAG", "setRecorderRear(Context," + flag + ")> " + e.getMessage());
            }
        }
    }
    //Setting 数据库中读取值
    public static int getdata(Context cxt) {
        try {
            return Settings.Global.getInt(cxt.getContentResolver(), "com.ybf", -1);
        } catch (Exception e) {
            if (e != null) {
                Log.i("TAG", "getRecorderRear(Context)> " + e.getMessage());
            }
        }
        return 0;
    }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        unregisterReceiver(broadcast);
        getContentResolver().unregisterContentObserver(mChangeContentObserver);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38148680/article/details/79218562