1a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos/*
2a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * Copyright (C) 2014 The Android Open Source Project
3a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos *
4a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License");
5a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * you may not use this file except in compliance with the License.
6a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * You may obtain a copy of the License at
7a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos *
8a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos *      http://www.apache.org/licenses/LICENSE-2.0
9a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos *
10a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * Unless required by applicable law or agreed to in writing, software
11a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS,
12a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * See the License for the specific language governing permissions and
14a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos * limitations under the License
15a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos */
16a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
17a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roospackage com.android.trustagent.test;
18a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
19a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.content.BroadcastReceiver;
20a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.content.Context;
21a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.content.Intent;
22a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.content.IntentFilter;
23a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.content.SharedPreferences;
24e303bf443532c2ad756260133f00747bcff11e69Jim Millerimport android.os.PersistableBundle;
25a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.preference.PreferenceManager;
26a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.service.trust.TrustAgentService;
27a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.support.v4.content.LocalBroadcastManager;
28604e7558ef32098644b2f9456d7743a07ae789dcJim Millerimport android.util.Log;
29a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roosimport android.widget.Toast;
30a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
310814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Millerimport java.util.List;
320814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller
337861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roospublic class SampleTrustAgent extends TrustAgentService
347861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        implements SharedPreferences.OnSharedPreferenceChangeListener {
35a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
362bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos    /**
372bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     * If true, allows anyone to control this trust agent, e.g. using adb:
382bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     * <pre>
392bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     * $ adb shell am broadcast -a action.sample_trust_agent.grant_trust\
402bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     *  -e extra.message SampleTrust\
412bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     *  --el extra.duration 1000 --ez extra.init_by_user false
422bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     * </pre>
432bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos     */
442bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos    private static final boolean ALLOW_EXTERNAL_BROADCASTS = false;
452bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos
46a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    LocalBroadcastManager mLocalBroadcastManager;
47a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
487e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos    private static final String ACTION_GRANT_TRUST = "action.sample_trust_agent.grant_trust";
49a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    private static final String ACTION_REVOKE_TRUST = "action.sample_trust_agent.revoke_trust";
50a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
51a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    private static final String EXTRA_MESSAGE = "extra.message";
52a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    private static final String EXTRA_DURATION = "extra.duration";
532bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos    private static final String EXTRA_INITIATED_BY_USER = "extra.init_by_user";
54a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
55a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    private static final String PREFERENCE_REPORT_UNLOCK_ATTEMPTS
56a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos            = "preference.report_unlock_attempts";
577861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    private static final String PREFERENCE_MANAGING_TRUST
587861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos            = "preference.managing_trust";
59481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    private static final String PREFERENCE_REPORT_DEVICE_LOCKED = "preference.report_device_locked";
60a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
61604e7558ef32098644b2f9456d7743a07ae789dcJim Miller    private static final String TAG = "SampleTrustAgent";
62604e7558ef32098644b2f9456d7743a07ae789dcJim Miller
63a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    @Override
64a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    public void onCreate() {
65a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        super.onCreate();
662bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
672bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos
68a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        IntentFilter filter = new IntentFilter();
697e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos        filter.addAction(ACTION_GRANT_TRUST);
70a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        filter.addAction(ACTION_REVOKE_TRUST);
71a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        mLocalBroadcastManager.registerReceiver(mReceiver, filter);
722bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        if (ALLOW_EXTERNAL_BROADCASTS) {
732bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos            registerReceiver(mReceiver, filter);
742bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        }
752bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos
767861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        setManagingTrust(getIsManagingTrust(this));
777861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        PreferenceManager.getDefaultSharedPreferences(this)
787861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                .registerOnSharedPreferenceChangeListener(this);
79a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
80a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
81a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    @Override
82d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller    public void onTrustTimeout() {
83d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller        super.onTrustTimeout();
84481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        logAndShowToast("onTrustTimeout(): timeout expired");
85481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    }
86481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos
87481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    @Override
88481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    public void onDeviceLocked() {
89481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        super.onDeviceLocked();
90481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        if (getReportDeviceLocked(this)) {
91481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos            logAndShowToast("onDeviceLocked(): device is now locked");
92481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        }
93481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    }
94481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos
95481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    @Override
96481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    public void onDeviceUnlocked() {
97481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        super.onDeviceUnlocked();
98481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        if (getReportDeviceLocked(this)) {
99481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos            logAndShowToast("onDeviceUnlocked(): device is now unlocked");
100481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        }
101d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller    }
102d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller
103d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller    @Override
1047e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos    public void onUnlockAttempt(boolean successful) {
105a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        if (getReportUnlockAttempts(this)) {
106481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos            logAndShowToast("onUnlockAttempt(successful=" + successful + ")");
107a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        }
108a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
109a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
110481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    private void logAndShowToast(String text) {
111481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        Log.i(TAG, text);
112481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
113481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    }
114481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos
115a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    @Override
1160814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller    public boolean onConfigure(List<PersistableBundle> options) {
1170814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller        if (options != null) {
1180814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller           for (int i = 0; i < options.size(); i++) {
1190814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller               Log.v(TAG, "Policy options received: " + options.get(i));
120e303bf443532c2ad756260133f00747bcff11e69Jim Miller           }
121e303bf443532c2ad756260133f00747bcff11e69Jim Miller        } else {
122e303bf443532c2ad756260133f00747bcff11e69Jim Miller            Log.w(TAG, "onConfigure() called with no options");
123e303bf443532c2ad756260133f00747bcff11e69Jim Miller        }
124604e7558ef32098644b2f9456d7743a07ae789dcJim Miller        // TODO: Handle options
125604e7558ef32098644b2f9456d7743a07ae789dcJim Miller        return true; // inform DPM that we support it
126604e7558ef32098644b2f9456d7743a07ae789dcJim Miller    }
127604e7558ef32098644b2f9456d7743a07ae789dcJim Miller
128604e7558ef32098644b2f9456d7743a07ae789dcJim Miller    @Override
129a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    public void onDestroy() {
130a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        super.onDestroy();
131a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        mLocalBroadcastManager.unregisterReceiver(mReceiver);
1322bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        if (ALLOW_EXTERNAL_BROADCASTS) {
1332bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos            unregisterReceiver(mReceiver);
1342bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        }
1357861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        PreferenceManager.getDefaultSharedPreferences(this)
1367861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                .unregisterOnSharedPreferenceChangeListener(this);
137a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
138a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
139a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
140a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        @Override
141a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        public void onReceive(Context context, Intent intent) {
142a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos            String action = intent.getAction();
1437e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos            if (ACTION_GRANT_TRUST.equals(action)) {
1447861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                try {
1457861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                    grantTrust(intent.getStringExtra(EXTRA_MESSAGE),
1467861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                            intent.getLongExtra(EXTRA_DURATION, 0),
1472bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos                            intent.getBooleanExtra(EXTRA_INITIATED_BY_USER, false));
1487861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                } catch (IllegalStateException e) {
149481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos                    logAndShowToast("IllegalStateException: " + e.getMessage());
1507861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                }
151a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos            } else if (ACTION_REVOKE_TRUST.equals(action)) {
152a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos                revokeTrust();
153a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos            }
154a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        }
155a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    };
156a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
1577e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos    public static void sendGrantTrust(Context context,
1582bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos            String message, long durationMs, boolean initiatedByUser) {
1597e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos        Intent intent = new Intent(ACTION_GRANT_TRUST);
160a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        intent.putExtra(EXTRA_MESSAGE, message);
161a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        intent.putExtra(EXTRA_DURATION, durationMs);
1622bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos        intent.putExtra(EXTRA_INITIATED_BY_USER, initiatedByUser);
163a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
164a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
165a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
166a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    public static void sendRevokeTrust(Context context) {
167a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        Intent intent = new Intent(ACTION_REVOKE_TRUST);
168a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
169a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
170a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
171a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    public static void setReportUnlockAttempts(Context context, boolean enabled) {
172a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
173a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos                .getDefaultSharedPreferences(context);
174a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        sharedPreferences.edit().putBoolean(PREFERENCE_REPORT_UNLOCK_ATTEMPTS, enabled).apply();
175a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
176a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos
177a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    public static boolean getReportUnlockAttempts(Context context) {
178a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
179a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos                .getDefaultSharedPreferences(context);
180a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos        return sharedPreferences.getBoolean(PREFERENCE_REPORT_UNLOCK_ATTEMPTS, false);
181a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos    }
1827861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos
183481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    public static void setReportDeviceLocked(Context context, boolean enabled) {
184481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
185481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos                .getDefaultSharedPreferences(context);
186481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        sharedPreferences.edit().putBoolean(PREFERENCE_REPORT_DEVICE_LOCKED, enabled).apply();
187481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    }
188481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos
189481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    public static boolean getReportDeviceLocked(Context context) {
190481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
191481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos                .getDefaultSharedPreferences(context);
192481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos        return sharedPreferences.getBoolean(PREFERENCE_REPORT_DEVICE_LOCKED, false);
193481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos    }
194481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos
1957861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    public static void setIsManagingTrust(Context context, boolean enabled) {
1967861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
1977861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                .getDefaultSharedPreferences(context);
1987861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        sharedPreferences.edit().putBoolean(PREFERENCE_MANAGING_TRUST, enabled).apply();
1997861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    }
2007861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos
2017861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    public static boolean getIsManagingTrust(Context context) {
2027861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        SharedPreferences sharedPreferences = PreferenceManager
2037861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos                .getDefaultSharedPreferences(context);
2047861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        return sharedPreferences.getBoolean(PREFERENCE_MANAGING_TRUST, false);
2057861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    }
2067861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos
2077861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    @Override
2087861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
2097861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        if (PREFERENCE_MANAGING_TRUST.equals(key)) {
2107861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos            setManagingTrust(getIsManagingTrust(this));
2117861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos        }
2127861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos    }
213a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos}
214