1*90c8c64dSAndroid Build Coastguard Worker /*
2*90c8c64dSAndroid Build Coastguard Worker  * Copyright (C) 2014 The Android Open Source Project
3*90c8c64dSAndroid Build Coastguard Worker  *
4*90c8c64dSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*90c8c64dSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*90c8c64dSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*90c8c64dSAndroid Build Coastguard Worker  *
8*90c8c64dSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*90c8c64dSAndroid Build Coastguard Worker  *
10*90c8c64dSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*90c8c64dSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*90c8c64dSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*90c8c64dSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*90c8c64dSAndroid Build Coastguard Worker  * limitations under the License.
15*90c8c64dSAndroid Build Coastguard Worker  */
16*90c8c64dSAndroid Build Coastguard Worker 
17*90c8c64dSAndroid Build Coastguard Worker package com.example.android.basicmanagedprofile;
18*90c8c64dSAndroid Build Coastguard Worker 
19*90c8c64dSAndroid Build Coastguard Worker import android.app.Activity;
20*90c8c64dSAndroid Build Coastguard Worker import android.app.Fragment;
21*90c8c64dSAndroid Build Coastguard Worker import android.content.Intent;
22*90c8c64dSAndroid Build Coastguard Worker import android.os.Bundle;
23*90c8c64dSAndroid Build Coastguard Worker import android.view.LayoutInflater;
24*90c8c64dSAndroid Build Coastguard Worker import android.view.View;
25*90c8c64dSAndroid Build Coastguard Worker import android.view.ViewGroup;
26*90c8c64dSAndroid Build Coastguard Worker import android.widget.Toast;
27*90c8c64dSAndroid Build Coastguard Worker 
28*90c8c64dSAndroid Build Coastguard Worker import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE;
29*90c8c64dSAndroid Build Coastguard Worker import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME;
30*90c8c64dSAndroid Build Coastguard Worker 
31*90c8c64dSAndroid Build Coastguard Worker /**
32*90c8c64dSAndroid Build Coastguard Worker  * This {@link Fragment} handles initiation of managed profile provisioning.
33*90c8c64dSAndroid Build Coastguard Worker  */
34*90c8c64dSAndroid Build Coastguard Worker public class SetupProfileFragment extends Fragment implements View.OnClickListener {
35*90c8c64dSAndroid Build Coastguard Worker 
36*90c8c64dSAndroid Build Coastguard Worker     private static final int REQUEST_PROVISION_MANAGED_PROFILE = 1;
37*90c8c64dSAndroid Build Coastguard Worker 
newInstance()38*90c8c64dSAndroid Build Coastguard Worker     public static SetupProfileFragment newInstance() {
39*90c8c64dSAndroid Build Coastguard Worker         return new SetupProfileFragment();
40*90c8c64dSAndroid Build Coastguard Worker     }
41*90c8c64dSAndroid Build Coastguard Worker 
SetupProfileFragment()42*90c8c64dSAndroid Build Coastguard Worker     public SetupProfileFragment() {
43*90c8c64dSAndroid Build Coastguard Worker     }
44*90c8c64dSAndroid Build Coastguard Worker 
45*90c8c64dSAndroid Build Coastguard Worker     @Override
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)46*90c8c64dSAndroid Build Coastguard Worker     public View onCreateView(LayoutInflater inflater, ViewGroup container,
47*90c8c64dSAndroid Build Coastguard Worker                              Bundle savedInstanceState) {
48*90c8c64dSAndroid Build Coastguard Worker         return inflater.inflate(R.layout.fragment_setup_profile, container, false);
49*90c8c64dSAndroid Build Coastguard Worker     }
50*90c8c64dSAndroid Build Coastguard Worker 
51*90c8c64dSAndroid Build Coastguard Worker     @Override
onViewCreated(View view, Bundle savedInstanceState)52*90c8c64dSAndroid Build Coastguard Worker     public void onViewCreated(View view, Bundle savedInstanceState) {
53*90c8c64dSAndroid Build Coastguard Worker         view.findViewById(R.id.set_up_profile).setOnClickListener(this);
54*90c8c64dSAndroid Build Coastguard Worker     }
55*90c8c64dSAndroid Build Coastguard Worker 
56*90c8c64dSAndroid Build Coastguard Worker     @Override
onClick(View view)57*90c8c64dSAndroid Build Coastguard Worker     public void onClick(View view) {
58*90c8c64dSAndroid Build Coastguard Worker         switch (view.getId()) {
59*90c8c64dSAndroid Build Coastguard Worker             case R.id.set_up_profile: {
60*90c8c64dSAndroid Build Coastguard Worker                 provisionManagedProfile();
61*90c8c64dSAndroid Build Coastguard Worker                 break;
62*90c8c64dSAndroid Build Coastguard Worker             }
63*90c8c64dSAndroid Build Coastguard Worker         }
64*90c8c64dSAndroid Build Coastguard Worker     }
65*90c8c64dSAndroid Build Coastguard Worker 
66*90c8c64dSAndroid Build Coastguard Worker     /**
67*90c8c64dSAndroid Build Coastguard Worker      * Initiates the managed profile provisioning. If we already have a managed profile set up on
68*90c8c64dSAndroid Build Coastguard Worker      * this device, we will get an error dialog in the following provisioning phase.
69*90c8c64dSAndroid Build Coastguard Worker      */
provisionManagedProfile()70*90c8c64dSAndroid Build Coastguard Worker     private void provisionManagedProfile() {
71*90c8c64dSAndroid Build Coastguard Worker         Activity activity = getActivity();
72*90c8c64dSAndroid Build Coastguard Worker         if (null == activity) {
73*90c8c64dSAndroid Build Coastguard Worker             return;
74*90c8c64dSAndroid Build Coastguard Worker         }
75*90c8c64dSAndroid Build Coastguard Worker         Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
76*90c8c64dSAndroid Build Coastguard Worker         intent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
77*90c8c64dSAndroid Build Coastguard Worker                         activity.getApplicationContext().getPackageName());
78*90c8c64dSAndroid Build Coastguard Worker         if (intent.resolveActivity(activity.getPackageManager()) != null) {
79*90c8c64dSAndroid Build Coastguard Worker             startActivityForResult(intent, REQUEST_PROVISION_MANAGED_PROFILE);
80*90c8c64dSAndroid Build Coastguard Worker             activity.finish();
81*90c8c64dSAndroid Build Coastguard Worker         } else {
82*90c8c64dSAndroid Build Coastguard Worker             Toast.makeText(activity, "Device provisioning is not enabled. Stopping.",
83*90c8c64dSAndroid Build Coastguard Worker                            Toast.LENGTH_SHORT).show();
84*90c8c64dSAndroid Build Coastguard Worker         }
85*90c8c64dSAndroid Build Coastguard Worker     }
86*90c8c64dSAndroid Build Coastguard Worker 
87*90c8c64dSAndroid Build Coastguard Worker     @Override
onActivityResult(int requestCode, int resultCode, Intent data)88*90c8c64dSAndroid Build Coastguard Worker     public void onActivityResult(int requestCode, int resultCode, Intent data) {
89*90c8c64dSAndroid Build Coastguard Worker         if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
90*90c8c64dSAndroid Build Coastguard Worker             if (resultCode == Activity.RESULT_OK) {
91*90c8c64dSAndroid Build Coastguard Worker                 Toast.makeText(getActivity(), "Provisioning done.", Toast.LENGTH_SHORT).show();
92*90c8c64dSAndroid Build Coastguard Worker             } else {
93*90c8c64dSAndroid Build Coastguard Worker                 Toast.makeText(getActivity(), "Provisioning failed.", Toast.LENGTH_SHORT).show();
94*90c8c64dSAndroid Build Coastguard Worker             }
95*90c8c64dSAndroid Build Coastguard Worker             return;
96*90c8c64dSAndroid Build Coastguard Worker         }
97*90c8c64dSAndroid Build Coastguard Worker         super.onActivityResult(requestCode, resultCode, data);
98*90c8c64dSAndroid Build Coastguard Worker     }
99*90c8c64dSAndroid Build Coastguard Worker 
100*90c8c64dSAndroid Build Coastguard Worker }
101