clearCallingIdentity及restoreCallingIdentity用途

本文详细解析了Android系统服务中clearCallingIdentity和restoreCallingIdentity的作用,通过实例分析了这两个方法如何在权限检查和跨进程通信中确保正确处理调用者的身份。在处理如设置WiFi热点等敏感操作时,这些方法对于维持权限管理和AppOps策略的合规性至关重要。
摘要由CSDN通过智能技术生成

lollipop-mstar-master/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java 中api setWifiApEnabled实现中

有以下语句

......

          if (! mSettingsStore.handleWifiApToggled(enabled)) {                                                                                                                                               

                return;

            } else {

                Slog.d(TAG, "handleWifiApToggled " + enabled);

            }    

 

handleWifiApToggled的实现在WifiSettingsStore.java文件中如下:

 

    synchronized boolean handleWifiApToggled(boolean wifiApEnabled) {

        if (mAirplaneModeOn && !isAirplaneToggleable()) {

            return false;

        }

 

        if (wifiApEnabled) {

            if (mAirplaneModeOn) {

                persistWifiApState(WIFI_ENABLED_AIRPLANE_OVERRIDE);

            } else {

                persistWifiApState(WIFI_AP_ENABLED);

            }

        } else {

            persistWifiApState(WIFI_AP_DISABLED);

        }                                                                                                                                                                                                      

        return true;

    }

===》

 

   private void persistWifiApState(int state) {                                                                                                                                                               

        final ContentResolver cr = mContext.getContentResolver();

        mPersistWifiApState = state;

        Settings.Global.putInt(cr, Settings.Global.WIFI_AP_ON, state);

    }

调用Settings.Global.putInt时

lollipop-mstar-master/frameworks/base/core/java/android/provider/Settings.java

 

       public static boolean putInt(ContentResolver cr, String name, int value) {

            Log.v(TAG,"putInt name = " + name + "value = " + value);

            return putIntForUser(cr, name, value, UserHandle.myUserId());

        }

===》

public boolean putStringForUser(Co

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值