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