diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 69e598ad84b17..4a2f23284e8ce 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -703,8 +703,18 @@ redirects:
to: /training/location/index.html
- from: /google/gcm/adv.html
to: /google/gcm/gcm.html
-- from: /work
- to: /training/enterprise/index.html
+- from: /training/enterprise/index.html
+ to: /work/index.html
+- from: /training/enterprise/app-compatibility.html
+ to: /work/managed-profiles.html
+- from: /training/enterprise/app-restrictions.html
+ to: /work/app-restrictions.html
+- from: /training/enterprise/cosu.html
+ to: /work/cosu.html
+- from: /training/enterprise/device-management-policy.html
+ to: /work/device-management-policy.html
+- from: /training/enterprise/work-policy-ctrl.html
+ to: https://developers.google.com/android/work/build-dpc
- from: /distribute/tools/promote/badge-files.html
to: https://play.google.com/intl/en_us/badges/
- from: /google/gcm/...
diff --git a/docs/html/distribute/googleplay/work/about.jd b/docs/html/distribute/googleplay/work/about.jd
index a31bca2755c8a..79e8a899f46f0 100644
--- a/docs/html/distribute/googleplay/work/about.jd
+++ b/docs/html/distribute/googleplay/work/about.jd
@@ -52,10 +52,13 @@ page.image=images/distribute/gpfw.jpg
Develop a great app for business
- - Follow best practices for security and manage user data properly. Businesses
- are more conscious of data security and employee productivity, especially when it
- comes to features that share information with other services.
- - Support the App Configuration framework to let an administrator remotely configure app settings such as:
+
- Follow best practices for security and manage user data
+ properly. Businesses are more conscious of data security and
+ employee productivity, especially when it comes to features that
+ share information with other services.
+ - Support the App Configuration framework to let an administrator remotely
+ configure app settings such as:
- Server address and protocol settings
- The ability to switch features on and off
@@ -65,11 +68,15 @@ page.image=images/distribute/gpfw.jpg
- Request the minimum permissions that your app needs.
- Make sure communication to your backend and data in your backend is secure.
- - Implement authorization policies that will minimize the number of your employees that can access user data.
- - Offer compatibility with work
- profile and test that with the BasicManagedProfile sample app.
- - Support app restrictions so that IT admins can remotely configure your app through leading EMM solutions.
+ - Implement authorization policies that will minimize the number of your
+ employees that can access user data.
+ - Offer compatibility with work
+ profile and test that with the
+ BasicManagedProfile sample app.
+ - Support app restrictions
+ so that IT admins can remotely configure your app through leading
+ EMM solutions.
Provide support and maintenance
diff --git a/docs/html/guide/topics/admin/device-admin.jd b/docs/html/guide/topics/admin/device-admin.jd
index 45bd76ae8c211..e2fef04b75372 100644
--- a/docs/html/guide/topics/admin/device-admin.jd
+++ b/docs/html/guide/topics/admin/device-admin.jd
@@ -48,11 +48,12 @@ solutions for Android-powered devices. It discusses the various features
provided by the Device Administration API to provide stronger security for
employee devices that are powered by Android.
-Note For information on building a Work Policy
-Controller for Android for Work deployments, see Building a Work
-Policy Controller.
-
+
+ Note For information on building a Work Policy
+ Controller for Android for Work deployments, see
+ Build a Device Policy Controller.
+
Device Administration API Overview
diff --git a/docs/html/images/work/cards/android-studio_600px.png b/docs/html/images/work/cards/android-studio_600px.png
new file mode 100644
index 0000000000000..d2ce8d773c990
Binary files /dev/null and b/docs/html/images/work/cards/android-studio_600px.png differ
diff --git a/docs/html/images/work/cards/briefcase_600px.png b/docs/html/images/work/cards/briefcase_600px.png
new file mode 100644
index 0000000000000..9c30cf0bf5d0e
Binary files /dev/null and b/docs/html/images/work/cards/briefcase_600px.png differ
diff --git a/docs/html/images/work/cards/work-cloud_600px.png b/docs/html/images/work/cards/work-cloud_600px.png
new file mode 100644
index 0000000000000..9e63a0c158d75
Binary files /dev/null and b/docs/html/images/work/cards/work-cloud_600px.png differ
diff --git a/docs/html/images/work/cards/work-devhub_600px.png b/docs/html/images/work/cards/work-devhub_600px.png
new file mode 100644
index 0000000000000..b63b9174f57fd
Binary files /dev/null and b/docs/html/images/work/cards/work-devhub_600px.png differ
diff --git a/docs/html/images/work/cards/work-folder_600px.png b/docs/html/images/work/cards/work-folder_600px.png
new file mode 100644
index 0000000000000..1804d6fff41e4
Binary files /dev/null and b/docs/html/images/work/cards/work-folder_600px.png differ
diff --git a/docs/html/images/work/cards/work-profile_600px.png b/docs/html/images/work/cards/work-profile_600px.png
new file mode 100644
index 0000000000000..60284ff7759a0
Binary files /dev/null and b/docs/html/images/work/cards/work-profile_600px.png differ
diff --git a/docs/html/images/work/cosu-pinning_vs_locktaskmode.png b/docs/html/images/work/cosu-pinning_vs_locktaskmode.png
new file mode 100644
index 0000000000000..8fa470b659dac
Binary files /dev/null and b/docs/html/images/work/cosu-pinning_vs_locktaskmode.png differ
diff --git a/docs/html/images/work/cosu-pinning_vs_locktaskmode_2x.png b/docs/html/images/work/cosu-pinning_vs_locktaskmode_2x.png
new file mode 100644
index 0000000000000..d7690f48307f1
Binary files /dev/null and b/docs/html/images/work/cosu-pinning_vs_locktaskmode_2x.png differ
diff --git a/docs/html/images/work/guide-app-restrictions.png b/docs/html/images/work/guide-app-restrictions.png
new file mode 100644
index 0000000000000..83c2b42c23608
Binary files /dev/null and b/docs/html/images/work/guide-app-restrictions.png differ
diff --git a/docs/html/images/work/guide-app-restrictions_2x.png b/docs/html/images/work/guide-app-restrictions_2x.png
new file mode 100644
index 0000000000000..4e64a1c66f37a
Binary files /dev/null and b/docs/html/images/work/guide-app-restrictions_2x.png differ
diff --git a/docs/html/images/work/guide-managed-overview.png b/docs/html/images/work/guide-managed-overview.png
new file mode 100644
index 0000000000000..caead689d2810
Binary files /dev/null and b/docs/html/images/work/guide-managed-overview.png differ
diff --git a/docs/html/images/work/guide-managed-overview_2x.png b/docs/html/images/work/guide-managed-overview_2x.png
new file mode 100644
index 0000000000000..53518ad420055
Binary files /dev/null and b/docs/html/images/work/guide-managed-overview_2x.png differ
diff --git a/docs/html/images/work/hero_650px.png b/docs/html/images/work/hero_650px.png
new file mode 100644
index 0000000000000..5c790fa6eaddd
Binary files /dev/null and b/docs/html/images/work/hero_650px.png differ
diff --git a/docs/html/images/work/hero_650px_2x.png b/docs/html/images/work/hero_650px_2x.png
new file mode 100644
index 0000000000000..d3e5049ba8766
Binary files /dev/null and b/docs/html/images/work/hero_650px_2x.png differ
diff --git a/docs/html/images/enterprise/work-launcher.png b/docs/html/images/work/work-launcher.png
similarity index 100%
rename from docs/html/images/enterprise/work-launcher.png
rename to docs/html/images/work/work-launcher.png
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index 824cbd359369e..74bad7bb49ab0 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -365,7 +365,7 @@ var RESOURCE_COLLECTIONS = {
"resources": [
"https://www.android.com/work/",
"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
- "training/enterprise/index.html"
+ "work/index.html"
]
},
"distribute/essentials": {
@@ -1749,26 +1749,6 @@ var RESOURCE_COLLECTIONS = {
"training/monitoring-device-state/index.html"
]
},
- "training/work/apps": {
- "title": "",
- "resources": [
- "training/enterprise/app-compatibility.html",
- "training/enterprise/app-restrictions.html",
- "training/enterprise/cosu.html",
- "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
- "samples/AppRestrictionSchema/index.html",
- "https://www.youtube.com/watch?v=dH41OutAMNM",
- "samples/AppRestrictionEnforcer/index.html"
- ]
- },
- "training/work/admin": {
- "title": "",
- "resources": [
- "training/enterprise/work-policy-ctrl.html",
- "samples/BasicManagedProfile/index.html",
- "https://www.youtube.com/watch?v=j3QC6hcpy90"
- ]
- },
"tools/help/log": {
"title": "",
"resources": [
@@ -1887,4 +1867,45 @@ var RESOURCE_COLLECTIONS = {
"https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
]
},
-}
+ "work/landing/primary": {
+ "title": "",
+ "resources": [
+ "work/overview.html",
+ "work/guide.html",
+ "https://connect.googleforwork.com/community/applicants/android/isv",
+ "work/app-restrictions.html",
+ "work/cosu.html",
+ "work/managed-profiles.html"
+ ]
+ },
+ "work/landing/resources": {
+ "title": "",
+ "resources": [
+ "https://developers.google.com/android/work/",
+ "https://www.google.com/work/android/",
+ "https://developers.google.com/android/work/build-dpc",
+ "https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "https://www.youtube.com/watch?v=dH41OutAMNM&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX"
+ ]
+ },
+ "work/apps": {
+ "title": "",
+ "resources": [
+ "work/managed-profiles.html",
+ "work/app-restrictions.html",
+ "work/cosu.html",
+ "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "samples/AppRestrictionSchema/index.html",
+ "samples/AppRestrictionEnforcer/index.html"
+ ]
+ },
+ "work/admin": {
+ "title": "",
+ "resources": [
+ "https://developers.google.com/android/work/build-dpc",
+ "samples/BasicManagedProfile/index.html",
+ "https://www.youtube.com/watch?v=j3QC6hcpy90"
+ ]
+ }
+};
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index 225d4ec1f4df3..ed8b54fd70866 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -3270,19 +3270,55 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"type":"distribute"
},
{
- "title":"Android for Work",
+ "title":"Join the Android for Work DevHub",
"titleFriendly":"",
- "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
- "url":"https://www.android.com/work/",
+ "summary":"The Android for Work DevHub is a place to help developers keep up with Android in the workplace.",
+ "url":"https://connect.googleforwork.com/community/applicants/android/isv",
+ "group":"",
+ "keywords": ["work", "enterprise", "isv", "devhub"],
+ "tags": [],
+ "image":"images/work/cards/work-devhub_600px.png",
+ "lang":"en",
+ "type":"Community"
+ },
+ {
+ "title":"Enterprise Mobility Managers",
+ "titleFriendly":"",
+ "summary":"Integrate Android for Work into your enterprise mobility management (EMM) solution.",
+ "url":"https://developers.google.com/android/work/",
"group":"",
"keywords": ["work", "enterprise", "emm"],
"tags": [],
- "image":"images/cards/card-android-work_2x.png",
+ "image":"images/work/cards/work-cloud_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Learn More About Android for Work",
+ "titleFriendly":"",
+ "summary":"Android for Work makes your favorite phones and tablets the perfect business tools.",
+ "url":"https://www.google.com/work/android/",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/work-profile_600px.png",
"lang":"en",
"type":"about"
},
{
- "title":"Android for Work DevBytes",
+ "title":"Build a Device Policy Controller",
+ "titleFriendly":"",
+ "summary":"Create and administer a managed profile on an employee's device.",
+ "url":"https://developers.google.com/android/work/build-dpc",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/work-folder_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Android for Work for Developers",
"titleFriendly":"",
"summary":"Watch the videos in this playlist to understand more about Android for Work and get tips on developing enterprise apps.",
"url":"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
@@ -3306,10 +3342,10 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"type":"youtube"
},
{
- "title":"Building an enterprise ready app",
+ "title":"Building an Enterprise Ready App",
"titleFriendly":"",
"summary":"A holistic view of Android for Work for developers.",
- "url":"https://www.youtube.com/watch?v=dH41OutAMNM",
+ "url":"https://www.youtube.com/watch?v=dH41OutAMNM&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
"group":"",
"keywords": ["work", "enterprise", "emm"],
"tags": [],
@@ -3437,18 +3473,6 @@ DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
"lang":"en",
"type":"Video"
},
- {
- "title":"Android for Work: Single Use Devices",
- "titleFriendly":"",
- "summary":"Android M is bringing the power of Android to all kinds of workplaces.",
- "url":"https://www.youtube.com/watch?v=j3QC6hcpy90",
- "group":"",
- "keywords": ["Marshmallow"],
- "tags": [],
- "image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
- "lang":"en",
- "type":"Video"
- },
{
"title":"Runtime Permissions in Android 6.0 Marshmallow",
"titleFriendly":"",
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index fb85f9d90676e..a53aeda064111 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -3182,19 +3182,127 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
},
{
"title":"Android for Work",
- "category":"Enterprise",
- "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
- "url":"https://www.android.com/work/",
+ "titleFriendly":"",
+ "summary": "Develop apps for Android for Work to take advantage of security and management features built into Android.",
+ "url":"https://developer.android.com/work",
"group":"",
"keywords": ["work", "enterprise", "emm"],
"tags": [],
- "image":"images/cards/card-android-work_2x.png",
+ "image":"images/work/cards/briefcase_600px.png",
+ "lang":"en",
+ "type":"work"
+ },
+ {
+ "title":"Android for Work Developer Overview",
+ "titleFriendly":"",
+ "summary": "Learn how to build Android apps for the enterprise and take advantage of Google's Android for Work program.",
+ "url":"https://developer.android.com/work/overview.html",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/briefcase_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Android for Work Developer Guide",
+ "titleFriendly":"",
+ "summary": "Android for Work provides organizations with a secure, flexible, and unified Android mobility platform combining devices, applications, and management.",
+ "url":"https://developer.android.com/work/guide.html",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/android-studio_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Set up App Restrictions",
+ "titleFriendly":"",
+ "summary": "Learn how to implement app restrictions and configuration settings that can be changed by other apps on the same device.",
+ "url":"https://developer.android.com/work/app-restrictions.html",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/briefcase_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Set up Managed Profiles",
+ "titleFriendly":"",
+ "summary": "Learn how to make sure your apps operate smoothly in a corporate environment by following some best practices.",
+ "url":"https://developer.android.com/work/managed-profiles.html",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/briefcase_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Set up Single-Purpose Devices",
+ "titleFriendly":"",
+ "summary": "Learn how to develop single-use solutions for Android devices.",
+ "url":"https://developer.android.com/work/cosu.html",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/briefcase_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Join the Android for Work DevHub",
+ "titleFriendly":"",
+ "summary":"The Android for Work DevHub is a place to help developers keep up with Android in the workplace.",
+ "url":"https://connect.googleforwork.com/community/applicants/android/isv",
+ "group":"",
+ "keywords": ["work", "enterprise", "isv", "devhub"],
+ "tags": [],
+ "image":"images/work/cards/work-devhub_600px.png",
+ "lang":"en",
+ "type":"Community"
+ },
+ {
+ "title":"Enterprise Mobility Managers",
+ "titleFriendly":"",
+ "summary":"Integrate Android for Work into your enterprise mobility management (EMM) solution.",
+ "url":"https://developers.google.com/android/work/",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/work-cloud_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Learn More About Android for Work",
+ "titleFriendly":"",
+ "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
+ "url":"https://www.google.com/work/android/",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/work-profile_600px.png",
"lang":"en",
"type":"about"
},
{
- "title":"Android for Work DevBytes",
- "category":"Enterprise",
+ "title":"Build a Device Policy Controller",
+ "titleFriendly":"",
+ "summary":"Learn how to develop a Device Policy Controller to create and administer a managed profile on an employee's device.",
+ "url":"https://developers.google.com/android/work/build-dpc",
+ "group":"",
+ "keywords": ["work", "enterprise", "emm"],
+ "tags": [],
+ "image":"images/work/cards/work-folder_600px.png",
+ "lang":"en",
+ "type":"guide"
+ },
+ {
+ "title":"Android for Work for Developers",
+ "titleFriendly":"",
"summary":"Watch the videos in this playlist to understand more about Android for Work and get tips on developing enterprise apps.",
"url":"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
"group":"",
@@ -3202,11 +3310,11 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
"tags": [],
"image":"https://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
"lang":"en",
- "type":"video"
+ "type":"youtube"
},
{
"title":"App Configurations, Testing and Launchers",
- "category":"Enterprise",
+ "titleFriendly":"",
"summary":"With Android for Work you can make your apps remotely configurable. We also cover how to test your app in a managed environment.",
"url":"https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
"group":"",
@@ -3214,23 +3322,23 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
"tags": [],
"image":"https://i1.ytimg.com/vi/39NkpWkaH8M/maxresdefault.jpg",
"lang":"en",
- "type":"video"
+ "type":"youtube"
},
{
- "title":"Building an enterprise ready app",
- "category":"Enterprise",
+ "title":"Building an Enterprise Ready App",
+ "titleFriendly":"",
"summary":"A holistic view of Android for Work for developers.",
- "url":"https://www.youtube.com/watch?v=dH41OutAMNM",
+ "url":"https://www.youtube.com/watch?v=dH41OutAMNM&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
"group":"",
"keywords": ["work", "enterprise", "emm"],
"tags": [],
"image":"https://i1.ytimg.com/vi/dH41OutAMNM/maxresdefault.jpg",
"lang":"en",
- "type":"video"
+ "type":"youtube"
},
{
"title":"Android for Work: Single Use Devices",
- "category":"Enterprise",
+ "titleFriendly":"",
"summary":"Single-purpose computers are everywhere, and Android can meet that need.",
"url":"https://www.youtube.com/watch?v=j3QC6hcpy90",
"group":"",
@@ -3238,7 +3346,7 @@ METADATA['en'].extras = METADATA['en'].extras.concat([
"tags": [],
"image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
"lang":"en",
- "type":"video"
+ "type":"youtube"
},
{
"title":"Discover YouTube cards",
@@ -3908,7 +4016,7 @@ METADATA['en'].collections = {
"resources": [
"https://www.android.com/work/",
"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
- "training/enterprise/index.html"
+ "work/index.html"
]
},
"distribute/essentials": {
@@ -5078,26 +5186,6 @@ METADATA['en'].collections = {
"training/monitoring-device-state/index.html"
]
},
- "training/work/apps": {
- "title": "",
- "resources": [
- "training/enterprise/app-compatibility.html",
- "training/enterprise/app-restrictions.html",
- "training/enterprise/cosu.html",
- "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
- "samples/AppRestrictionSchema/index.html",
- "https://www.youtube.com/watch?v=dH41OutAMNM",
- "samples/AppRestrictionEnforcer/index.html"
- ]
- },
- "training/work/admin": {
- "title": "",
- "resources": [
- "training/enterprise/work-policy-ctrl.html",
- "samples/BasicManagedProfile/index.html",
- "https://www.youtube.com/watch?v=j3QC6hcpy90"
- ]
- },
"tools/help/log": {
"title": "",
"resources": [
@@ -5251,6 +5339,47 @@ METADATA['en'].collections = {
"preview/features/picture-in-picture.html",
"preview/features/tv-recording-api.html"
]
+ },
+ "work/landing/primary": {
+ "title": "",
+ "resources": [
+ "work/overview.html",
+ "work/guide.html",
+ "https://connect.googleforwork.com/community/applicants/android/isv",
+ "work/app-restrictions.html",
+ "work/cosu.html",
+ "work/managed-profiles.html"
+ ]
+ },
+ "work/landing/resources": {
+ "title": "",
+ "resources": [
+ "https://developers.google.com/android/work/",
+ "https://www.google.com/work/android/",
+ "https://developers.google.com/android/work/build-dpc",
+ "https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "https://www.youtube.com/watch?v=dH41OutAMNM&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX"
+ ]
+ },
+ "work/apps": {
+ "title": "",
+ "resources": [
+ "work/managed-profiles.html",
+ "work/app-restrictions.html",
+ "work/cosu.html",
+ "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+ "samples/AppRestrictionSchema/index.html",
+ "samples/AppRestrictionEnforcer/index.html"
+ ]
+ },
+ "work/admin": {
+ "title": "",
+ "resources": [
+ "https://developers.google.com/android/work/build-dpc",
+ "samples/BasicManagedProfile/index.html",
+ "https://www.youtube.com/watch?v=j3QC6hcpy90"
+ ]
}
};
diff --git a/docs/html/jd_tag_helpers.js b/docs/html/jd_tag_helpers.js
index 3ad36335eaa42..0ec0d67cfd491 100644
--- a/docs/html/jd_tag_helpers.js
+++ b/docs/html/jd_tag_helpers.js
@@ -15,6 +15,7 @@ var ALL_RESOURCES = mergeArrays(
SAMPLES_RESOURCES,
TOOLS_RESOURCES,
TRAINING_RESOURCES,
+ WORK_RESOURCES,
YOUTUBE_RESOURCES,
BLOGGER_RESOURCES,
PREVIEW_RESOURCES
@@ -74,6 +75,7 @@ var ALL_RESOURCES_BY_TYPE = {
'tools': TOOLS_RESOURCES,
'training': TRAINING_RESOURCES,
'preview': PREVIEW_RESOURCES,
+ 'work': WORK_RESOURCES,
'youtube': YOUTUBE_RESOURCES,
'blog': BLOGGER_RESOURCES
};
@@ -112,4 +114,4 @@ for (var i = 0; i < ALL_RESOURCES.length; i++) {
ALL_RESOURCES_BY_URL[url] = res;
}
}
-var IS_RESOURCE_IN_LANG = buildResourceLookupMap(ALL_RESOURCES_BY_LANG);
\ No newline at end of file
+var IS_RESOURCE_IN_LANG = buildResourceLookupMap(ALL_RESOURCES_BY_LANG);
diff --git a/docs/html/training/_book.yaml b/docs/html/training/_book.yaml
index 47c690406d7e9..00f9295b05f73 100644
--- a/docs/html/training/_book.yaml
+++ b/docs/html/training/_book.yaml
@@ -754,18 +754,6 @@ toc:
- name: description
value: How to use DHU to test Auto apps.
-- title: Building Apps for Work
- path: /training/enterprise/index.html
- section:
- - title: Ensuring Compatibility with Managed Profiles
- path: /training/enterprise/app-compatibility.html
- - title: Implementing App Restrictions
- path: /training/enterprise/app-restrictions.html
- - title: Building a Device Policy Controller
- path: /training/enterprise/work-policy-ctrl.html
- - title: Configuring Corporate-Owned, Single-Use Devices
- path: /training/enterprise/cosu.html
-
- title: Best Practices for Interaction & Engagement
path: /training/best-ux.html
section:
@@ -1386,7 +1374,7 @@ toc:
- name: description
value: How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app.
- title: Enhancing Security with Device Management Policies
- path: /training/enterprise/device-management-policy.html
+ path: /work/device-management-policy.html
path_attributes:
- name: description
value: How to create an application that enforces security policies on devices.
diff --git a/docs/html/training/enterprise/index.jd b/docs/html/training/enterprise/index.jd
deleted file mode 100644
index d54607c402652..0000000000000
--- a/docs/html/training/enterprise/index.jd
+++ /dev/null
@@ -1,65 +0,0 @@
-page.title=Building Apps for Work
-meta.tags="work, enterprise, corporate"
-page.tags="work", "enterprise", "corporate"
-page.metaDescription=Learn how to build Android apps for the enterprise and take advantage of Google's Android for Work program.
-page.article=true
-
-@jd:body
-
-
-
-
- The Android framework provides features to support the security, data separation, and
- administration needs of a enterprise environment. As an app developer, you can make your app more
- appealing to corporate customers by gracefully handling enterprise security and feature
- restrictions. You can also modify your app so that technology administrators can remotely
- configure it for use with enterprise resources.
-
-
-
- To help businesses incorporate Android devices and apps into the workplace, Google provides the
- Android for Work program, which offers a suite
- of APIs and services for device distribution and administration. Through this program companies
- can connect with Enterprise Mobility Management (EMM) providers to help integrate Android with
- their businesses.
-
-
-
- For more information, follow the links below to learn how to update your Android app to support
- the enterprise environment or build enterprise-specific solutions.
-
-
-App Development for Enterprises
-
-
- Learn how to make your app function smoothly in corporate environments that restrict device
- features and data access. Go further to support enterprise use of your app by enabling
- restrictions that corporate technology administrators can use to remotely configure your app:
-
-
-
-
-
-Device and App Administration
-
-
- Learn how to build policy controller apps that enable enterprise technology administrators
- to manage devices, manage corporate apps, and provide access to company resources:
-
-
-
diff --git a/docs/html/training/enterprise/work-policy-ctrl.jd b/docs/html/training/enterprise/work-policy-ctrl.jd
deleted file mode 100644
index 8225ea32a470c..0000000000000
--- a/docs/html/training/enterprise/work-policy-ctrl.jd
+++ /dev/null
@@ -1,339 +0,0 @@
-page.title=Building a Device Policy Controller
-page.metaDescription=Learn how to develop a device policy controller to create and administer a managed profile on an employee's device.
-page.tags="work policy controller,WPC,device policy controller,DPC"
-@jd:body
-
-
-
-
-
- In an Android for Work deployment, an enterprise needs to maintain control
- over certain aspects of the employees' devices. The enterprise needs to
- ensure that work-related information is encrypted and is kept separate from
- employees' personal data. The enterprise may also need to limit device
- capabilities, such as whether the device is allowed to use its camera. And
- the enterprise may require that approved apps provide app restrictions, so
- the enterprise can turn app capability on or off as needed.
-
-
-
- To handle these tasks, an enterprise develops and deploys
- a device policy controller app (previously known as a
- work policy controller). This app is installed on each employee's device. The
- controller app installed on each employee's device and creates a work user
- profile, which accesses enterprise apps and data separately from the user's
- personal account. The controller app also acts as the
- bridge between the enterprise's management software and the device; the
- enterprise tells the controller app when it needs to make configuration
- changes, and the controller app makes the appropriate settings changes for the
- device and for other apps.
-
-
-
- This lesson describes how to develop a device policy controller app for devices
- in an Android for Work deployment. The lesson describes how to create a work
- user profile, how to set device policies, and how to apply
- restrictions to other apps running on the managed profile.
-
-
-
- Note: This lesson does not cover the situation where the
- only profile on the device is the managed profile, under the enterprise's
- control.
-
-
-Device Administration Overview
-
-
- In an Android for Work deployment, the enterprise administrator can set
- policies to control the behavior of employees' devices and apps. The
- enterprise administrator sets these policies with software provided by their
- Enterprise Mobility Management (EMM) provider. The EMM software communicates
- with a device policy controller on each device. The device policy controller, in
- turn, manages the settings and behavior of the work user profile on each
- individual’s device.
-
-
-
- Note: A device policy controller is built on the existing
- model used for device administration applications, as described in Device Administration.
- In particular, your app needs to create a subclass of {@link
- android.app.admin.DeviceAdminReceiver}, as described in that document.
-
-
-Managed profiles
-
-
- Users often want to use their personal devices in an enterprise setting. This
- situation can present enterprises with a dilemma. If the user can use their
- own device, the enterprise has to worry that confidential information (like
- employee emails and contacts) are on a device the enterprise does not
- control.
-
-
-
- To address this situation, Android 5.0 (API level 21) allows enterprises to
- set up a special work user profile using the Managed Profile API. This
- user profile is called a managed profile, or a work profile
- in the Android for Work program. If a device has a
- managed profile for work, the profile's settings are under the control of the
- enterprise administrator. The administrator can choose which apps are allowed
- for that profile, and can control just what device features are available to
- the profile.
-
-
-Create a Managed Profile
-
-To create a managed profile on a device that already has a personal profile,
-first check that the device can support a managed profile, by seeing if the
-device supports the {@link
-android.content.pm.PackageManager#FEATURE_MANAGED_USERS FEATURE_MANAGED_USERS}
-system feature:
-
-PackageManager pm = getPackageManager();
-if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
-
- // This device does not support native managed profiles!
-
-}
-
-If the device supports managed profiles, create one by sending an intent with
-an {@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE
-ACTION_PROVISION_MANAGED_PROFILE} action. Include the device admin package
-name as an extra.
-
-Activity provisioningActivity = getActivity();
-
-// You'll need the package name for the WPC app.
-String myWPCPackageName = "com.example.myWPCApp";
-
-// Set up the provisioning intent
-Intent provisioningIntent =
- new Intent("android.app.action.PROVISION_MANAGED_PROFILE");
-intent.putExtra(myWPCPackageName,
- provisioningActivity.getApplicationContext().getPackageName());
-
-if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager())
- == null) {
-
- // No handler for intent! Can't provision this device.
- // Show an error message and cancel.
-} else {
-
- // REQUEST_PROVISION_MANAGED_PROFILE is defined
- // to be a suitable request code
- startActivityForResult(provisioningIntent,
- REQUEST_PROVISION_MANAGED_PROFILE);
- provisioningActivity.finish();
-}
-
-The system responds to this intent by doing the following:
-
-
- - Verifies that the device is encrypted. If it is not, the system prompts
- the user to encrypt the device before proceeding.
-
-
- - Creates a managed profile.
-
-
- - Removes non-required applications from the managed profile.
-
-
- - Copies the device policy controller app into the managed profile and
- sets it as the profile owner.
-
-
-
-Override {@link android.app.Activity#onActivityResult onActivityResult()} to
-see whether the provisioning was successful, as shown in the following
-example code:
-
-@Override
-public void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- // Check if this is the result of the provisioning activity
- if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
-
- // If provisioning was successful, the result code is
- // Activity.RESULT_OK
- if (resultCode == Activity.RESULT_OK) {
- // Hurray! Managed profile created and provisioned!
- } else {
- // Boo! Provisioning failed!
- }
- return;
-
- } else {
- // This is the result of some other activity, call the superclass
- super.onActivityResult(requestCode, resultCode, data);
- }
-}
-
-After Creating the Managed Profile
-
-When the profile has been provisioned, the system calls the device policy
-controller app's {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete
-DeviceAdminReceiver.onProfileProvisioningComplete()} method. Override this
-callback method to finish enabling the managed profile.
-
-Typically, your {@link
-android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete
-DeviceAdminReceiver.onProfileProvisioningComplete()} callback implementation
-would perform these tasks:
-
-
- - Verify that the device is complying with the EMM's device policies, as
- described in Set Up Device Policies
-
-
- - Enable any system applications that the administrator chooses to make
- available within the managed profile, using {@link
- android.app.admin.DevicePolicyManager#enableSystemApp
- DevicePolicyManager.enableSystemApp()}
-
- - If the device uses Google Play for Work, add the Google account
- to the managed profile with {@link android.accounts.AccountManager#addAccount
- AccountManager.addAccount()}, so administrators can install
- applications to the device
-
-
-
-Once you have completed these tasks, call the device policy manager's
-{@link android.app.admin.DevicePolicyManager#setProfileEnabled
-setProfileEnabled()} method to activate the managed profile:
-
-
-// Get the device policy manager
-DevicePolicyManager myDevicePolicyMgr =
- (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
-
-ComponentName componentName = myDeviceAdminReceiver.getComponentName(this);
-
-// Set the name for the newly created managed profile.
-myDevicePolicyMgr.setProfileName(componentName, "My New Managed Profile");
-
-// ...and enable the profile
-manager.setProfileEnabled(componentName);
-
-Set Up Device Policies
-
-
- The device policy controller app is responsible for applying the enterprise's
- device policies. For example, a particular enterprise might require that all
- devices become locked after a certain number of failed attempts to enter the
- device password. The controller app queries the EMM to find out what
- the current policies are, then uses the Device Administration
- API to apply those policies.
-
-
-For information on how to apply device policies, see the
-Device
-Administration guide.
-
-
-Apply App Restrictions
-
-Enterprise environments may require that approved apps implement security
-or feature restrictions. App developers must implement these restrictions
-and declare them for use by enterprise administrators, as described in
-Implementing
-App Restrictions. The device policy controller receives restriction changes
-from the enterprise administrator, and forwards those restriction changes to the apps.
-
-For example, a particular news app might have a restriction setting that
-controls whether the app is allowed to download videos over a cellular
-network. When the EMM wants to disable cellular downloads, it sends a
-notification to the controller app. The controller app, in turn,
-notifies the news app that the restriction setting has changed.
-
-Note: This document covers how the device policy
-controller app changes the restriction settings for the other apps on the
-managed profile. Details on how the device policy controller app communicates with
-the EMM are out of scope for this document.
-
-To change an app's restrictions, call the {@link
-android.app.admin.DevicePolicyManager#setApplicationRestrictions
-DevicePolicyManager.setApplicationRestrictions()} method. This method is passed
-three parameters: the controller app's {@link
-android.app.admin.DeviceAdminReceiver}, the package name of the app whose
-restrictions are being changed, and a {@link android.os.Bundle Bundle} that
-contains the restrictions you want to set.
-
-For example, suppose there's an app on the managed profile with the package
-name "com.example.newsfetcher". This app has a single boolean
-restriction that can be configured, with the key
-"downloadByCellular". If this restriction is set to
-false, the newsfetcher app is not allowed to download data through
-a cellular network; it must use a Wi-Fi network instead.
-
-
- If your device policy controller app needs to turn off cellular downloads, it
- would first fetch the device policy service object, as described above. It
- then assembles a restrictions bundle and passes this bundle to {@link
- android.app.admin.DevicePolicyManager#setApplicationRestrictions
- setApplicationRestrictions()}:
-
-
-// Fetch the DevicePolicyManager
-DevicePolicyManager myDevicePolicyMgr =
- (DevicePolicyManager) thisActivity
- .getSystemService(Context.DEVICE_POLICY_SERVICE);
-
-// Set up the restrictions bundle
-bundle restrictionsBundle = new Bundle();
-restrictionsBundle.putBoolean("downloadByCellular", false);
-
-// Pass the restrictions to the policy manager. Assume the WPC app
-// already has a DeviceAdminReceiver defined (myDeviceAdminReceiver).
-myDevicePolicyMgr.setApplicationRestrictions(
- myDeviceAdminReceiver, "com.example.newsfetcher", restrictionsBundle);
-
-
-Note: The device policy service conveys the restrictions
-change to the app you name. However, it is up to that app to actually implement
-the restriction. For example, in this case, the app would be responsible for
-disabling its ability to use cellular networks for video downloads. Setting the
-restriction does not cause the system to enforce this restriction on the app.
-For more information, see Implementing App Restrictions.
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 2c0fb4ee8cf12..e2aa5f4dabe7a 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -1187,37 +1187,6 @@
-
-
-
-
-
-
-
-
-