1cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang/*
2cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * Copyright (C) 2016 The Android Open Source Project
3cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang *
4cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * Licensed under the Apache License, Version 2.0 (the "License");
5cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * you may not use this file except in compliance with the License.
6cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * You may obtain a copy of the License at
7cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang *
8cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang *      http://www.apache.org/licenses/LICENSE-2.0
9cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang *
10cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * Unless required by applicable law or agreed to in writing, software
11cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * distributed under the License is distributed on an "AS IS" BASIS,
12cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * See the License for the specific language governing permissions and
14cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * limitations under the License.
15cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang */
16cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
1769c182afb0e6d82a341a28b4317aa703af768906Gary Maipackage com.android.contacts.preference;
18cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
1987dabf129c79300090785eb08739af88692b1e07Tingting Wangimport android.content.ActivityNotFoundException;
20cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.content.Context;
21cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.content.Intent;
22cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.content.pm.PackageInfo;
23cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.content.pm.PackageManager;
2487dabf129c79300090785eb08739af88692b1e07Tingting Wangimport android.net.Uri;
25cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.os.Bundle;
26cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.preference.Preference;
27cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangimport android.preference.PreferenceFragment;
2887dabf129c79300090785eb08739af88692b1e07Tingting Wangimport android.widget.Toast;
29cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
303f6a2444e0134b7380cdb2e13abf4bf1163336d0Arthur Wangimport com.android.contacts.R;
310a49afa2ad697307cc04ef4cb86570574fa720f2Gary Maiimport com.android.contacts.activities.LicenseActivity;
32cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
33cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang/**
34cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang * This fragment shows the preferences for "about".
35cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang */
36cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wangpublic class AboutPreferenceFragment extends PreferenceFragment {
37cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
38ff9a19d4a322287daefd55e716b65806ab6cb8e0James Laskey    public static final String PRIVACY_POLICY_URL = "http://www.google.com/policies/privacy";
39ff9a19d4a322287daefd55e716b65806ab6cb8e0James Laskey    public static final String TERMS_OF_SERVICE_URL = "http://www.google.com/policies/terms";
4087dabf129c79300090785eb08739af88692b1e07Tingting Wang
41a031344ffad8872885d50c3769e6a5a9602e5910Wenyi Wang    public static AboutPreferenceFragment newInstance() {
42a031344ffad8872885d50c3769e6a5a9602e5910Wenyi Wang        return new AboutPreferenceFragment();
43a031344ffad8872885d50c3769e6a5a9602e5910Wenyi Wang    }
44a031344ffad8872885d50c3769e6a5a9602e5910Wenyi Wang
45cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    @Override
46cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    public void onCreate(Bundle savedInstanceState) {
47cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        super.onCreate(savedInstanceState);
48cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
49cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        // Load the preferences from an XML resource
50cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        addPreferencesFromResource(R.xml.preference_about);
51cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
52cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        // Set build version of Contacts App.
53cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        final PackageManager manager = getActivity().getPackageManager();
54cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        try {
55cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang            final PackageInfo info = manager.getPackageInfo(getActivity().getPackageName(), 0);
56cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang            final Preference versionPreference = findPreference(
57cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang                    getString(R.string.pref_build_version_key));
58cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang            versionPreference.setSummary(info.versionName);
59cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        } catch (PackageManager.NameNotFoundException e) {
60cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang            // Nothing
61cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        }
62cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
63cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        final Preference licensePreference = findPreference(
64cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang                getString(R.string.pref_open_source_licenses_key));
65cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        licensePreference.setIntent(new Intent(getActivity(), LicenseActivity.class));
6687dabf129c79300090785eb08739af88692b1e07Tingting Wang
6787dabf129c79300090785eb08739af88692b1e07Tingting Wang        final Preference privacyPolicyPreference = findPreference("pref_privacy_policy");
6887dabf129c79300090785eb08739af88692b1e07Tingting Wang        final Preference termsOfServicePreference = findPreference("pref_terms_of_service");
6987dabf129c79300090785eb08739af88692b1e07Tingting Wang
7087dabf129c79300090785eb08739af88692b1e07Tingting Wang        final Preference.OnPreferenceClickListener listener =
7187dabf129c79300090785eb08739af88692b1e07Tingting Wang                new Preference.OnPreferenceClickListener() {
7287dabf129c79300090785eb08739af88692b1e07Tingting Wang            @Override
7387dabf129c79300090785eb08739af88692b1e07Tingting Wang            public boolean onPreferenceClick(Preference preference) {
7487dabf129c79300090785eb08739af88692b1e07Tingting Wang                try {
7587dabf129c79300090785eb08739af88692b1e07Tingting Wang                    if (preference == privacyPolicyPreference) {
7687dabf129c79300090785eb08739af88692b1e07Tingting Wang                        startActivityForUrl(PRIVACY_POLICY_URL);
7787dabf129c79300090785eb08739af88692b1e07Tingting Wang                    } else if (preference == termsOfServicePreference) {
7887dabf129c79300090785eb08739af88692b1e07Tingting Wang                        startActivityForUrl(TERMS_OF_SERVICE_URL);
7987dabf129c79300090785eb08739af88692b1e07Tingting Wang                    }
8087dabf129c79300090785eb08739af88692b1e07Tingting Wang                } catch (ActivityNotFoundException ex) {
8187dabf129c79300090785eb08739af88692b1e07Tingting Wang                    Toast.makeText(getContext(), getString(R.string.url_open_error_toast),
8287dabf129c79300090785eb08739af88692b1e07Tingting Wang                            Toast.LENGTH_SHORT).show();
8387dabf129c79300090785eb08739af88692b1e07Tingting Wang                }
8487dabf129c79300090785eb08739af88692b1e07Tingting Wang                return true;
8587dabf129c79300090785eb08739af88692b1e07Tingting Wang            }
8687dabf129c79300090785eb08739af88692b1e07Tingting Wang        };
8787dabf129c79300090785eb08739af88692b1e07Tingting Wang
8887dabf129c79300090785eb08739af88692b1e07Tingting Wang        privacyPolicyPreference.setOnPreferenceClickListener(listener);
8987dabf129c79300090785eb08739af88692b1e07Tingting Wang        termsOfServicePreference.setOnPreferenceClickListener(listener);
90cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    }
91cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
92cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    @Override
93cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    public Context getContext() {
94cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang        return getActivity();
95cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang    }
9687dabf129c79300090785eb08739af88692b1e07Tingting Wang
9787dabf129c79300090785eb08739af88692b1e07Tingting Wang    private void startActivityForUrl(String urlString) {
9887dabf129c79300090785eb08739af88692b1e07Tingting Wang        final Intent intent = new Intent();
9987dabf129c79300090785eb08739af88692b1e07Tingting Wang        intent.setAction(Intent.ACTION_VIEW);
10087dabf129c79300090785eb08739af88692b1e07Tingting Wang        intent.setData(Uri.parse(urlString));
10187dabf129c79300090785eb08739af88692b1e07Tingting Wang        startActivity(intent);
10287dabf129c79300090785eb08739af88692b1e07Tingting Wang    }
103cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang}
104cc3016e029b354f412dbdc0d4b139455203c816cWenyi Wang
105