Android 系统开发提供Api供三方应用(三、实现系统添加接

2021-10-17  本文已影响0人  MrDemo

这个代码就很简单了,我们既然实现了自己的接口调用,但是我们发现我们自己的Service中其实是没有任何业务逻辑处理的。及时处理也是自己的代码,我们稍微进阶一下,我们获取一下系统的锁屏时间,实现一个最简单的例子,那么我们需要修改两个

第一修改自己的Service代码如下

package android.hytera.wp;
import android.os.RemoteException;
import android.provider.Settings;
import android.content.Context;
/**
 * this is my SecondService for system
 * test aidl file
 */
public class LookMessageService extends ILookMessage.Stub {
    public String value = "I am a value";
    private Context mContext;
    public LookMessageService(Context mContext){
    this.mContext=mContext;
         /*
             可根据自己的实际情况来决定是否需要传入 Context 参数。
         */
     }
    @Override
    public void setValue(String message) throws RemoteException {
        this.value = message;
    }
    @Override
    public String getValue() throws RemoteException {
          int time=0;
                try {
                    time=Settings.System.getInt(mContext.getContentResolver(),
                            Settings.System.SCREEN_OFF_TIMEOUT);
                } catch (Settings.SettingNotFoundException e) {
                    e.printStackTrace();
                }
        return time+"";
    }
}

里面添加了一个Context的对象,并且把以前的getValue的方法修改了一下

 @Override
    public String getValue() throws RemoteException {
          int time=0;
                try {
                  //修改这个部分,不是返回value了,我们把锁屏的时间返回去了,如果是-1就是代表不锁屏
                    time=Settings.System.getInt(mContext.getContentResolver(),
                            Settings.System.SCREEN_OFF_TIMEOUT);
                } catch (Settings.SettingNotFoundException e) {
                    e.printStackTrace();
                }
        return time+"";
    }

修改了一个构造方法,传入了一个Context
第二就是修改一下SystemService.java里面的启动,加入了一个Context的对象,代码如下

                LookMessageManager.getInstance().setValue("我要变化");//设置value
                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
                traceBeginAndSlog("start htyera_wp service");
                try {
                    Slog.i(TAG, "add htyera_wp Service");
                    LookMessageService look = new LookMessageService(context);
                    ServiceManager.addService(Context.LOOK_MESSAGE_WP, look);
                } catch (Throwable e) {
                    Slog.e(TAG, "Failure starting SerialService", e);
                }
                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);

结束

上一篇下一篇

猜你喜欢

热点阅读