# Copyright 2010, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

This package contains sample code for building Email Policy packages.  These are small Android
Package (APK) files containing a device-specific configuration values for the Email application.

These policy files are intended for use by an OEM who is building a device using the Android
Open Source platform, but wishes to provide small customizations to the Email application without
having to edit or merge changes directly into its source.  It also allows the same Email application
to be deployed to devices with slightly different policies.

For more information, see the comments in src/com/android/email/policy/EmailPolicy.java.
