<?xml version="1.0" encoding="utf-8"?>
<!--
  Copyright 2015 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.
  -->
<resources>
    <string name="app_name">RuntimePermissions</string>
    <string name="intro_message">
        <![CDATA[


            This sample shows runtime permissions available in Android M and above.
            Display the log on screen to follow the execution.
            If executed on an Android M device, an additional option to access contacts is shown
            that is declared with optional, M and above only permissions.


        ]]>
    </string>
    <string name="ok">OK</string>
    <string name="contacts_string">Total number of contacts: %1$,d\nFirst contact:<b>%2$s</b></string>
    <string name="contacts_none">No contacts stored on device.</string>
    <string name="contacts_empty">Contacts not loaded.</string>
    <string name="add_contact">Add a contact</string>
    <string name="show_contact">Show first contact</string>
    <string name="contacts_intro">This fragment demonstrates access to the contact database on the device.\n
            Clicking \"Add a contact\" adds a new contact named "__DUMMY ENTRY" directly into the database.\n
    Clicking \"Show first contact\" accesses the contact database to display the name of the first contact.</string>
    <string name="camera_unavailable"><b>Camera could not be opened.</b>\nThis occurs when the camera is not available (for example it is already in use) or if the system has denied access (for example when camera access has been disabled).</string>
    <string name="back">Back</string>
    <string name="show_camera">Show camera preview</string>
    <string name="show_contacts">Show and add contacts</string>
    <string name="main_introduction">Click the buttons below to show a camera preview or access the contacts database.\nNote that the contacts option is only available on Android M to illustrate the use of optional, M-only permissions that are not requested on lower SDK platforms.</string>
    <string name="permision_available_camera">Camera Permission has been granted. Preview can now be opened.</string>
    <string name="permision_available_contacts">Contacts Permissions have been granted. Contacts screen can now be opened.</string>
    <string name="permissions_not_granted">Permissions were not granted.</string>
    <string name="permission_camera_rationale">Camera permission is needed to show the camera preview.</string>
    <string name="permission_contacts_rationale">Contacts permissions are needed to demonstrate access.</string>
</resources>
