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\ 4194e15a59b757678949cccb5d783bee1638e84697Adrian Roos * --el extra.duration 1000 --ez extra.init_by_user false --ez extra.dismiss_keyguard 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"; 5494e15a59b757678949cccb5d783bee1638e84697Adrian Roos private static final String EXTRA_DISMISS_KEYGUARD = "extra.dismiss_keyguard"; 55a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 56a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos private static final String PREFERENCE_REPORT_UNLOCK_ATTEMPTS 57a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos = "preference.report_unlock_attempts"; 587861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos private static final String PREFERENCE_MANAGING_TRUST 597861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos = "preference.managing_trust"; 60481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos private static final String PREFERENCE_REPORT_DEVICE_LOCKED = "preference.report_device_locked"; 61a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 62604e7558ef32098644b2f9456d7743a07ae789dcJim Miller private static final String TAG = "SampleTrustAgent"; 63604e7558ef32098644b2f9456d7743a07ae789dcJim Miller 64a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos @Override 65a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public void onCreate() { 66a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos super.onCreate(); 672bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos mLocalBroadcastManager = LocalBroadcastManager.getInstance(this); 682bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos 69a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos IntentFilter filter = new IntentFilter(); 707e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos filter.addAction(ACTION_GRANT_TRUST); 71a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos filter.addAction(ACTION_REVOKE_TRUST); 72a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos mLocalBroadcastManager.registerReceiver(mReceiver, filter); 732bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos if (ALLOW_EXTERNAL_BROADCASTS) { 742bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos registerReceiver(mReceiver, filter); 752bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos } 762bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos 777861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos setManagingTrust(getIsManagingTrust(this)); 787861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos PreferenceManager.getDefaultSharedPreferences(this) 797861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos .registerOnSharedPreferenceChangeListener(this); 80a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 81a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 82a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos @Override 83d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller public void onTrustTimeout() { 84d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller super.onTrustTimeout(); 85481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos logAndShowToast("onTrustTimeout(): timeout expired"); 86481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 87481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos 88481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos @Override 89481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos public void onDeviceLocked() { 90481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos super.onDeviceLocked(); 91481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos if (getReportDeviceLocked(this)) { 92481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos logAndShowToast("onDeviceLocked(): device is now locked"); 93481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 94481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 95481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos 96481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos @Override 97481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos public void onDeviceUnlocked() { 98481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos super.onDeviceUnlocked(); 99481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos if (getReportDeviceLocked(this)) { 100481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos logAndShowToast("onDeviceUnlocked(): device is now unlocked"); 101481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 102d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller } 103d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller 104d4efaac5d54cdb3735b032bb76a5639949f33216Jim Miller @Override 1057e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos public void onUnlockAttempt(boolean successful) { 106a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos if (getReportUnlockAttempts(this)) { 107481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos logAndShowToast("onUnlockAttempt(successful=" + successful + ")"); 108a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 109a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 110a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 111481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos private void logAndShowToast(String text) { 112481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos Log.i(TAG, text); 113481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); 114481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 115481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos 116a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos @Override 1170814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller public boolean onConfigure(List<PersistableBundle> options) { 1180814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller if (options != null) { 1190814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller for (int i = 0; i < options.size(); i++) { 1200814d41c73fe3ebc2d1269f1a4fc73d0cf4cb230Jim Miller Log.v(TAG, "Policy options received: " + options.get(i)); 121e303bf443532c2ad756260133f00747bcff11e69Jim Miller } 122e303bf443532c2ad756260133f00747bcff11e69Jim Miller } else { 123e303bf443532c2ad756260133f00747bcff11e69Jim Miller Log.w(TAG, "onConfigure() called with no options"); 124e303bf443532c2ad756260133f00747bcff11e69Jim Miller } 125604e7558ef32098644b2f9456d7743a07ae789dcJim Miller // TODO: Handle options 126604e7558ef32098644b2f9456d7743a07ae789dcJim Miller return true; // inform DPM that we support it 127604e7558ef32098644b2f9456d7743a07ae789dcJim Miller } 128604e7558ef32098644b2f9456d7743a07ae789dcJim Miller 129604e7558ef32098644b2f9456d7743a07ae789dcJim Miller @Override 130a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public void onDestroy() { 131a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos super.onDestroy(); 132a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos mLocalBroadcastManager.unregisterReceiver(mReceiver); 1332bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos if (ALLOW_EXTERNAL_BROADCASTS) { 1342bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos unregisterReceiver(mReceiver); 1352bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos } 1367861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos PreferenceManager.getDefaultSharedPreferences(this) 1377861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos .unregisterOnSharedPreferenceChangeListener(this); 138a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 139a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 140a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos private BroadcastReceiver mReceiver = new BroadcastReceiver() { 141a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos @Override 142a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public void onReceive(Context context, Intent intent) { 143a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos String action = intent.getAction(); 1447e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos if (ACTION_GRANT_TRUST.equals(action)) { 14594e15a59b757678949cccb5d783bee1638e84697Adrian Roos int flags = 0; 14694e15a59b757678949cccb5d783bee1638e84697Adrian Roos if (intent.getBooleanExtra(EXTRA_INITIATED_BY_USER, false)) { 14794e15a59b757678949cccb5d783bee1638e84697Adrian Roos flags |= TrustAgentService.FLAG_GRANT_TRUST_INITIATED_BY_USER; 14894e15a59b757678949cccb5d783bee1638e84697Adrian Roos } 14994e15a59b757678949cccb5d783bee1638e84697Adrian Roos if (intent.getBooleanExtra(EXTRA_DISMISS_KEYGUARD, false)) { 15094e15a59b757678949cccb5d783bee1638e84697Adrian Roos flags |= TrustAgentService.FLAG_GRANT_TRUST_DISMISS_KEYGUARD; 15194e15a59b757678949cccb5d783bee1638e84697Adrian Roos } 15294e15a59b757678949cccb5d783bee1638e84697Adrian Roos 1537861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos try { 1547861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos grantTrust(intent.getStringExtra(EXTRA_MESSAGE), 15594e15a59b757678949cccb5d783bee1638e84697Adrian Roos intent.getLongExtra(EXTRA_DURATION, 0), flags); 1567861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } catch (IllegalStateException e) { 157481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos logAndShowToast("IllegalStateException: " + e.getMessage()); 1587861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } 159a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } else if (ACTION_REVOKE_TRUST.equals(action)) { 160a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos revokeTrust(); 161a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 162a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 163a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos }; 164a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 1657e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos public static void sendGrantTrust(Context context, 1662bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos String message, long durationMs, boolean initiatedByUser) { 1677e03dfcb796ef1a6000a5fd5fda03c9e15ea62e1Adrian Roos Intent intent = new Intent(ACTION_GRANT_TRUST); 168a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos intent.putExtra(EXTRA_MESSAGE, message); 169a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos intent.putExtra(EXTRA_DURATION, durationMs); 1702bb8bfd1e85c8359412159fde57dd5722f5be58cAdrian Roos intent.putExtra(EXTRA_INITIATED_BY_USER, initiatedByUser); 171a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos LocalBroadcastManager.getInstance(context).sendBroadcast(intent); 172a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 173a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 174a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public static void sendRevokeTrust(Context context) { 175a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos Intent intent = new Intent(ACTION_REVOKE_TRUST); 176a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos LocalBroadcastManager.getInstance(context).sendBroadcast(intent); 177a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 178a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 179a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public static void setReportUnlockAttempts(Context context, boolean enabled) { 180a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 181a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos .getDefaultSharedPreferences(context); 182a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos sharedPreferences.edit().putBoolean(PREFERENCE_REPORT_UNLOCK_ATTEMPTS, enabled).apply(); 183a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 184a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos 185a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos public static boolean getReportUnlockAttempts(Context context) { 186a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 187a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos .getDefaultSharedPreferences(context); 188a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos return sharedPreferences.getBoolean(PREFERENCE_REPORT_UNLOCK_ATTEMPTS, false); 189a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos } 1907861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos 191481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos public static void setReportDeviceLocked(Context context, boolean enabled) { 192481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 193481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos .getDefaultSharedPreferences(context); 194481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos sharedPreferences.edit().putBoolean(PREFERENCE_REPORT_DEVICE_LOCKED, enabled).apply(); 195481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 196481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos 197481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos public static boolean getReportDeviceLocked(Context context) { 198481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 199481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos .getDefaultSharedPreferences(context); 200481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos return sharedPreferences.getBoolean(PREFERENCE_REPORT_DEVICE_LOCKED, false); 201481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos } 202481a6df99fea124bc4354da34ff668750cdc9041Adrian Roos 2037861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos public static void setIsManagingTrust(Context context, boolean enabled) { 2047861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 2057861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos .getDefaultSharedPreferences(context); 2067861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos sharedPreferences.edit().putBoolean(PREFERENCE_MANAGING_TRUST, enabled).apply(); 2077861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } 2087861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos 2097861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos public static boolean getIsManagingTrust(Context context) { 2107861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos SharedPreferences sharedPreferences = PreferenceManager 2117861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos .getDefaultSharedPreferences(context); 2127861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos return sharedPreferences.getBoolean(PREFERENCE_MANAGING_TRUST, false); 2137861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } 2147861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos 2157861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos @Override 2167861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 2177861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos if (PREFERENCE_MANAGING_TRUST.equals(key)) { 2187861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos setManagingTrust(getIsManagingTrust(this)); 2197861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } 2207861c663fd64af33ec2a4c5ad653c806dc8bd994Adrian Roos } 221a3dafcfb26117e3a2efa3983bd7ba79ae6831680Adrian Roos} 222