DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master

Bug: 120502534
Change-Id: I2f628c4ea8232cd3b09aa0d583ab8189952b1b3c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3961e09..c264285 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -29,6 +29,8 @@
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
 
+    <uses-sdk android:minSdkVersion="21"/>
+
     <application
         android:name=".DocumentsApplication"
         android:label="@string/app_label"
diff --git a/res/values-as/inspector_strings.xml b/res/values-as/inspector_strings.xml
deleted file mode 100644
index 6d5f90e..0000000
--- a/res/values-as/inspector_strings.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="inspector_title" msgid="1924760928091740238">"তথ্য"</string>
-    <string name="inspector_load_error" msgid="7522190243413249291">"ফাইলৰ তথ্য ল\'ড কৰিবপৰা নগ\'ল"</string>
-    <string name="inspector_debug_section" msgid="2576052661505700421">"ডিবাগ তথ্য (বিকাশকৰ্তা মাত্ৰ)"</string>
-    <string name="inspector_debug_metadata_section" msgid="5875140675600744846">"ৰ\' মেটাডেটা: <xliff:g id="METADATATYPE">%1$s</xliff:g>"</string>
-    <string name="inspector_metadata_section" msgid="6077622515328240575">"মিডিয়াৰ সবিশেষ"</string>
-    <string name="handler_app_file_opens_with" msgid="5272329600389613550">"এইধৰণৰ ফাইল ই খুলিব পাৰে"</string>
-    <string name="handler_app_belongs_to" msgid="5444507329303253553">"ই এই ফাইলটো যোগান ধৰিছে"</string>
-    <string name="handler_app_not_selected" msgid="1294439257183908786">"বাছনি কৰা হোৱা নাই"</string>
-    <string name="handler_app_unknown" msgid="5911661530593229287">"অজ্ঞাত"</string>
-    <string name="metadata_dimensions" msgid="6112907724016659801">"দীঘ-প্ৰস্থ"</string>
-    <string name="metadata_dimensions_format" msgid="6138765871412005962">"<xliff:g id="WIDTH">%1$d</xliff:g> x <xliff:g id="HEIGHT">%2$d</xliff:g> - <xliff:g id="MEGAPIXELS">%3$,.1f</xliff:g>মে.পি."</string>
-    <string name="metadata_coordinates" msgid="6897383227370702734">"স্থানাংক"</string>
-    <string name="metadata_coordinates_format" msgid="1402724596764547761">"<xliff:g id="LATITUDE">%1$,.3f</xliff:g>, <xliff:g id="LONGITUDE">%2$,.3f</xliff:g>"</string>
-    <string name="metadata_altitude" msgid="8063792127436794294">"উচ্চতা"</string>
-    <string name="metadata_camera" msgid="2363009732801281319">"কেমেৰা"</string>
-    <string name="metadata_camera_format" msgid="1494489751904311612">"<xliff:g id="MAKE">%1$s</xliff:g> <xliff:g id="MODEL">%2$s</xliff:g>"</string>
-    <string name="metadata_aperture" msgid="6538741952698935357">"এপাৰচ্চাৰ"</string>
-    <string name="metadata_shutter_speed" msgid="8204739885103326131">"শ্বাটাৰৰ বেগ"</string>
-    <string name="metadata_duration" msgid="3115494422055472715">"কালদৈৰ্ঘ্য"</string>
-    <string name="metadata_date_time" msgid="1090351199248114406">"তোলাৰ সময়"</string>
-    <string name="metadata_focal_length" msgid="3440735161407699893">"ফ\'কেল দৈৰ্ঘ্য"</string>
-    <string name="metadata_focal_format" msgid="8542211707962355623">"<xliff:g id="LENGTH">%1$.2f </xliff:g>মি.মি."</string>
-    <string name="metadata_iso_speed_ratings" msgid="1699781252899759058">"আইএছঅ\' সমতুল্য"</string>
-    <string name="metadata_iso_format" msgid="4153285204012694861">"আইএছঅ\' <xliff:g id="ISO_SPEED">%1$d</xliff:g>"</string>
-    <string name="metadata_artist" msgid="8972421485694988540">"শিল্পী"</string>
-    <string name="metadata_composer" msgid="4696926808308256056">"সুৰকাৰ"</string>
-    <string name="metadata_album" msgid="1661699531214720236">"এলবাম"</string>
-    <string name="metadata_address" msgid="1849921023707744640">"অৱস্থান"</string>
-    <string name="debug_stream_types" msgid="2088565280360139333">"ষ্ট্ৰীমৰ প্ৰকাৰ"</string>
-    <string name="debug_raw_size" msgid="7487139640175650185">"ডিবাগ ফাইলৰ আকাৰ (বাইট)"</string>
-</resources>
diff --git a/res/values-as/mimes.xml b/res/values-as/mimes.xml
deleted file mode 100644
index d5b4102..0000000
--- a/res/values-as/mimes.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="generic_extention_file_type" msgid="5947398320635880291">"<xliff:g id="EXTENSION">%1$s</xliff:g> ফাইল"</string>
-    <string name="generic_file_type" msgid="1415477154743494280">"ফাইল"</string>
-    <string name="image_file_type" msgid="3011633523704887793">"চিত্ৰ"</string>
-    <string name="image_extension_file_type" msgid="992617216367594851">"<xliff:g id="FILETYPE">%1$s</xliff:g> চিত্ৰ"</string>
-    <string name="audio_file_type" msgid="3790525543519624632">"অডিঅ’"</string>
-    <string name="audio_extension_file_type" msgid="6334293531796491314">"<xliff:g id="FILETYPE">%1$s</xliff:g> অডিঅ\'"</string>
-    <string name="video_file_type" msgid="7290473366042482095">"ভিডিঅ\'"</string>
-    <string name="video_extension_file_type" msgid="6352763029831291433">"<xliff:g id="FILETYPE">%1$s</xliff:g> ভিডিঅ\'"</string>
-    <string name="archive_file_type" msgid="1463432996680398798">"<xliff:g id="FILETYPE">%1$s</xliff:g> আৰ্কাইভ"</string>
-    <string name="apk_file_type" msgid="6004275470389462277">"Android এপ্লিকেশ্বন"</string>
-    <string name="txt_file_type" msgid="4677767777860724696">"সাধাৰণ পাঠ"</string>
-    <string name="html_file_type" msgid="2034229603117527970">"HTML নথি"</string>
-    <string name="pdf_file_type" msgid="3382260303795039988">"PDF নথি"</string>
-    <string name="word_file_type" msgid="2366349268129894972">"Word নথি"</string>
-    <string name="ppt_file_type" msgid="2570841599899893925">"PowerPoint উপস্থাপন"</string>
-    <string name="excel_file_type" msgid="8363932635044575463">"Excel স্প্ৰেডশ্বীট"</string>
-    <string name="gdoc_file_type" msgid="242328101061228382">"Google নথি"</string>
-    <string name="gsheet_file_type" msgid="8055591929133067952">"Google স্প্ৰেডশ্বীট"</string>
-    <string name="gslides_file_type" msgid="8359750985956690177">"Google উপস্থাপন"</string>
-    <string name="gdraw_file_type" msgid="655688091676820371">"Google অংকন"</string>
-    <string name="gtable_file_type" msgid="7332773878374650335">"Google তালিকা"</string>
-    <string name="gform_file_type" msgid="4803176103746107611">"Google ফৰ্ম"</string>
-    <string name="gmap_file_type" msgid="6684180781808007016">"Google মেপ"</string>
-    <string name="gsite_file_type" msgid="3742812051249149526">"Google ছাইট"</string>
-    <string name="directory_type" msgid="2702987727566226354">"ফ\'ল্ডাৰ"</string>
-</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 1d21c9a..4a93e16 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -17,80 +17,143 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="files_label" msgid="771781190045103748">"ফাইলবোৰ"</string>
-    <string name="downloads_label" msgid="5462789470049501103">"ডাউনল\'ডসমূহ"</string>
+    <!-- no translation found for downloads_label (5462789470049501103) -->
+    <skip />
     <!-- no translation found for app_label (8089292432455111409) -->
     <skip />
     <!-- no translation found for launcher_label (799410258349837668) -->
     <skip />
-    <string name="title_open" msgid="3165686459158020921">"ইয়াৰ পৰা খোলক"</string>
-    <string name="title_save" msgid="4384490653102710025">"ইয়াত ছেভ কৰক"</string>
-    <string name="menu_create_dir" msgid="2413624798689091042">"নতুন ফ\'ল্ডাৰ"</string>
-    <string name="menu_grid" msgid="1453636521731880680">"গ্ৰিড হিচাপে চোৱাৰ সুবিধা"</string>
-    <string name="menu_list" msgid="6714267452146410402">"সূচী অনুসৰি চোৱাৰ সুবিধা"</string>
-    <string name="menu_search" msgid="1876699106790719849">"অনুসন্ধান কৰক"</string>
-    <string name="menu_settings" msgid="6520844520117939047">"সঞ্চয়াগাৰৰ ছেটিংসমূহ"</string>
-    <string name="menu_open" msgid="9092138100049759315">"খোলক"</string>
-    <string name="menu_open_with" msgid="5507647065467520229">"ইয়াৰ জৰিয়তে খোলক"</string>
-    <string name="menu_open_in_new_window" msgid="6686563636123311276">"নতুন ৱিণ্ড\'ত খোলক"</string>
-    <string name="menu_save" msgid="5195367497138965168">"ছেভ কৰক"</string>
-    <string name="menu_share" msgid="4307140947108068356">"শ্বেয়াৰ কৰক"</string>
-    <string name="menu_delete" msgid="1022254131543256626">"মচক"</string>
-    <string name="menu_select_all" msgid="7600576812185570403">"সকলো বাছনি কৰক"</string>
-    <string name="menu_copy" msgid="7404820171352314754">"ইয়াত প্ৰতিলিপি কৰক…"</string>
-    <string name="menu_move" msgid="2310760789561129882">"ইয়ালৈ স্থানান্তৰ কৰক…"</string>
+    <!-- no translation found for title_open (3165686459158020921) -->
+    <skip />
+    <!-- no translation found for title_save (4384490653102710025) -->
+    <skip />
+    <!-- no translation found for menu_create_dir (2413624798689091042) -->
+    <skip />
+    <!-- no translation found for menu_grid (1453636521731880680) -->
+    <skip />
+    <!-- no translation found for menu_list (6714267452146410402) -->
+    <skip />
+    <!-- no translation found for menu_search (1876699106790719849) -->
+    <skip />
+    <!-- no translation found for menu_settings (6520844520117939047) -->
+    <skip />
+    <!-- no translation found for menu_open (9092138100049759315) -->
+    <skip />
+    <!-- no translation found for menu_open_with (5507647065467520229) -->
+    <skip />
+    <!-- no translation found for menu_open_in_new_window (6686563636123311276) -->
+    <skip />
+    <!-- no translation found for menu_save (5195367497138965168) -->
+    <skip />
+    <!-- no translation found for menu_share (4307140947108068356) -->
+    <skip />
+    <!-- no translation found for menu_delete (1022254131543256626) -->
+    <skip />
+    <!-- no translation found for menu_select_all (7600576812185570403) -->
+    <skip />
+    <!-- no translation found for menu_copy (7404820171352314754) -->
+    <skip />
+    <!-- no translation found for menu_move (2310760789561129882) -->
+    <skip />
     <string name="menu_compress" msgid="37539111904724188">"সংকুচিত কৰক"</string>
     <string name="menu_extract" msgid="8171946945982532262">"ইয়ালৈ আহৰণ কৰক…"</string>
-    <string name="menu_rename" msgid="1883113442688817554">"নতুন নাম দিয়ক"</string>
-    <string name="menu_inspect" msgid="7279855349299446224">"তথ্য পাওক"</string>
+    <!-- no translation found for menu_rename (1883113442688817554) -->
+    <skip />
+    <!-- no translation found for menu_inspect (7279855349299446224) -->
+    <skip />
     <string name="menu_view_in_owner" msgid="7228948660557554770">"<xliff:g id="SOURCE">%1$s</xliff:g>ত চাওক"</string>
-    <string name="menu_new_window" msgid="2947837751796109126">"নতুন ৱিণ্ড\'"</string>
-    <string name="menu_cut_to_clipboard" msgid="2878752142015026229">"কাট কৰক"</string>
-    <string name="menu_copy_to_clipboard" msgid="5064081159073330776">"প্ৰতিলিপি কৰক"</string>
-    <string name="menu_paste_from_clipboard" msgid="360947260414135827">"পেইষ্ট কৰক"</string>
-    <string name="menu_paste_into_folder" msgid="8000644546983240101">"ফ\'ল্ডাৰত পেইষ্ট কৰক"</string>
-    <string name="menu_advanced_show" msgid="7558626506462906726">"আভ্যন্তৰীণ সঞ্চয়াগাৰ দেখুৱাওক"</string>
-    <string name="menu_advanced_hide" msgid="6488381508009246334">"আভ্যন্তৰীণ সঞ্চয়াগাৰ লুকুৱাওক"</string>
-    <string name="button_select" msgid="240863497069321364">"বাছনি কৰক"</string>
-    <string name="button_copy" msgid="8219059853840996027">"প্ৰতিলিপি কৰক"</string>
+    <!-- no translation found for menu_new_window (2947837751796109126) -->
+    <skip />
+    <!-- no translation found for menu_cut_to_clipboard (2878752142015026229) -->
+    <skip />
+    <!-- no translation found for menu_copy_to_clipboard (5064081159073330776) -->
+    <skip />
+    <!-- no translation found for menu_paste_from_clipboard (360947260414135827) -->
+    <skip />
+    <!-- no translation found for menu_paste_into_folder (8000644546983240101) -->
+    <skip />
+    <!-- no translation found for menu_advanced_show (7558626506462906726) -->
+    <skip />
+    <!-- no translation found for menu_advanced_hide (6488381508009246334) -->
+    <skip />
+    <!-- no translation found for button_select (240863497069321364) -->
+    <skip />
+    <!-- no translation found for button_copy (8219059853840996027) -->
+    <skip />
     <string name="button_compress" msgid="8951561310857223966">"সংকুচিত কৰক"</string>
     <string name="button_extract" msgid="1038674453689912247">"আহৰণ কৰক"</string>
-    <string name="button_move" msgid="8596460499325291272">"স্থানান্তৰ কৰক"</string>
-    <string name="button_dismiss" msgid="7235249361023803349">"প্ৰত্যাখ্যান কৰক"</string>
-    <string name="button_retry" msgid="4011461781916631389">"আকৌ চেষ্টা কৰক"</string>
-    <string name="button_clear" msgid="5412304437764369441">"মচক"</string>
-    <string name="button_show_provider" msgid="6905880493806292753">"যোগানকাৰীত দেখুৱাওক"</string>
-    <string name="not_sorted" msgid="7813496644889115530">"ক্ৰমবদ্ধ কৰা হোৱা নাই"</string>
-    <string name="sort_dimension_name" msgid="6325591541414177579">"নাম"</string>
-    <string name="sort_dimension_summary" msgid="7724534446881397860">"সাৰাংশ"</string>
-    <string name="sort_dimension_file_type" msgid="5779709622922085381">"প্রকাৰ"</string>
-    <string name="sort_dimension_size" msgid="2190547351159472884">"আকাৰ"</string>
-    <string name="sort_dimension_date" msgid="4231005651895254033">"সংশোধন কৰা হ\'ল"</string>
-    <string name="directory_items" msgid="6645621978998614003">"সমলৰ সংখ্যা"</string>
-    <string name="sort_direction_ascending" msgid="5882787683763248102">"ঊৰ্ধ্বক্ৰমিক"</string>
-    <string name="sort_direction_descending" msgid="1729187589765894076">"অধঃক্ৰমিক"</string>
-    <string name="drawer_open" msgid="8071673398187261741">"ৰুটসমূহ দেখুৱাওক"</string>
-    <string name="drawer_close" msgid="4263880768630848848">"ৰুটসমূহ লুকুৱাওক"</string>
-    <string name="save_error" msgid="8631128801982095782">"নথি-পত্ৰ ছেভ কৰিব পৰা নগ\'ল"</string>
-    <string name="create_error" msgid="3092144450044861994">"ফ\'ল্ডাৰ সৃষ্টি কৰিব পৰা নগ\'ল"</string>
-    <string name="query_error" msgid="6625421453613879336">"এই মুহূৰ্তত সমল ল\'ড কৰিব নোৱাৰি"</string>
-    <string name="root_recent" msgid="1080156975424341623">"শেহতীয়া"</string>
-    <string name="root_available_bytes" msgid="8269870862691408864">"<xliff:g id="SIZE">%1$s</xliff:g> খালী আছে"</string>
-    <string name="root_type_service" msgid="6521366147466512289">"সঞ্চয়াগাৰৰ সেৱাসমূহ"</string>
-    <string name="root_type_shortcut" msgid="6059343175525442279">"শ্বৰ্টকাটসমূহ"</string>
-    <string name="root_type_device" msgid="1713604128005476585">"ডিভাইচসমূহ"</string>
-    <string name="root_type_apps" msgid="8646073235029886342">"অধিক এপ্"</string>
-    <string name="empty" msgid="5300254272613103004">"কোনো বস্তু নাই"</string>
-    <string name="no_results" msgid="2371026325236359209">"%1$s ত কোনো মিল পোৱা নগ\'ল"</string>
-    <string name="toast_no_application" msgid="7555319548595113121">"ফাইল খুলিব পৰা নাই"</string>
+    <!-- no translation found for button_move (8596460499325291272) -->
+    <skip />
+    <!-- no translation found for button_dismiss (7235249361023803349) -->
+    <skip />
+    <!-- no translation found for button_retry (4011461781916631389) -->
+    <skip />
+    <!-- no translation found for button_clear (5412304437764369441) -->
+    <skip />
+    <!-- no translation found for button_show_provider (6905880493806292753) -->
+    <skip />
+    <!-- no translation found for not_sorted (7813496644889115530) -->
+    <skip />
+    <!-- no translation found for sort_dimension_name (6325591541414177579) -->
+    <skip />
+    <!-- no translation found for sort_dimension_summary (7724534446881397860) -->
+    <skip />
+    <!-- no translation found for sort_dimension_file_type (5779709622922085381) -->
+    <skip />
+    <!-- no translation found for sort_dimension_size (2190547351159472884) -->
+    <skip />
+    <!-- no translation found for sort_dimension_date (4231005651895254033) -->
+    <skip />
+    <!-- no translation found for directory_items (6645621978998614003) -->
+    <skip />
+    <!-- no translation found for sort_direction_ascending (5882787683763248102) -->
+    <skip />
+    <!-- no translation found for sort_direction_descending (1729187589765894076) -->
+    <skip />
+    <!-- no translation found for drawer_open (8071673398187261741) -->
+    <skip />
+    <!-- no translation found for drawer_close (4263880768630848848) -->
+    <skip />
+    <!-- no translation found for save_error (8631128801982095782) -->
+    <skip />
+    <!-- no translation found for create_error (3092144450044861994) -->
+    <skip />
+    <!-- no translation found for query_error (6625421453613879336) -->
+    <skip />
+    <!-- no translation found for root_recent (1080156975424341623) -->
+    <skip />
+    <!-- no translation found for root_available_bytes (8269870862691408864) -->
+    <skip />
+    <!-- no translation found for root_type_service (6521366147466512289) -->
+    <skip />
+    <!-- no translation found for root_type_shortcut (6059343175525442279) -->
+    <skip />
+    <!-- no translation found for root_type_device (1713604128005476585) -->
+    <skip />
+    <!-- no translation found for root_type_apps (8646073235029886342) -->
+    <skip />
+    <!-- no translation found for empty (5300254272613103004) -->
+    <skip />
+    <!-- no translation found for no_results (2371026325236359209) -->
+    <skip />
+    <!-- no translation found for toast_no_application (7555319548595113121) -->
+    <skip />
     <string name="toast_view_in_archives_unsupported" msgid="1923221390170964845">"আৰ্কাইভত থকা ফাইলবোৰ খুলিব নোৱাৰি"</string>
-    <string name="toast_failed_delete" msgid="3453846588205817591">"কিছুমান নথি মচিব পৰা নগ\'ল"</string>
-    <string name="share_via" msgid="8725082736005677161">"ইয়াৰ জৰিয়তে শ্বেয়াৰ কৰক"</string>
-    <string name="copy_notification_title" msgid="52256435625098456">"ফাইলসমূহৰ প্ৰতিলিপি কৰি থকা হৈছে"</string>
+    <!-- no translation found for toast_failed_delete (3453846588205817591) -->
+    <skip />
+    <!-- no translation found for share_via (8725082736005677161) -->
+    <skip />
+    <!-- no translation found for copy_notification_title (52256435625098456) -->
+    <skip />
     <string name="compress_notification_title" msgid="6830195148113751021">"ফাইলবোৰ সংকুচিত কৰি থকা হৈছে"</string>
-    <string name="extract_notification_title" msgid="5067393961754430469">"ফাইল আহৰণ কৰি থকা হৈছে"</string>
-    <string name="move_notification_title" msgid="3173424987049347605">"ফাইল আঁতৰাই থকা হৈছে"</string>
-    <string name="delete_notification_title" msgid="2512757431856830792">"ফাইলসমূহ মচি থকা হৈছে"</string>
-    <string name="copy_remaining" msgid="5390517377265177727">"<xliff:g id="DURATION">%s</xliff:g> মিনিট বাকী আছে"</string>
+    <!-- no translation found for extract_notification_title (5067393961754430469) -->
+    <skip />
+    <!-- no translation found for move_notification_title (3173424987049347605) -->
+    <skip />
+    <!-- no translation found for delete_notification_title (2512757431856830792) -->
+    <skip />
+    <!-- no translation found for copy_remaining (5390517377265177727) -->
+    <skip />
     <plurals name="copy_begin" formatted="false" msgid="151184708996738192">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু প্ৰতিলিপি কৰি থকা হৈছে।</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু প্ৰতিলিপি কৰি থকা হৈছে।</item>
@@ -111,13 +174,18 @@
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচি থকা হৈছে।</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচি থকা হৈছে।</item>
     </plurals>
-    <string name="undo" msgid="2902438994196400565">"আনডু কৰক"</string>
-    <string name="copy_preparing" msgid="4759516490222449324">"সাজু কৰি থকা হৈছে…"</string>
-    <string name="compress_preparing" msgid="7401605598969019696">"সাজু কৰি থকা হৈছে…"</string>
-    <string name="extract_preparing" msgid="4796626960061745796">"সাজু কৰি থকা হৈছে…"</string>
-    <string name="move_preparing" msgid="6504239656430530761">"সাজু কৰি থকা হৈছে…"</string>
-    <string name="delete_preparing" msgid="7339349837842802508">"সাজু কৰি থকা হৈছে…"</string>
-    <string name="delete_progress" msgid="2627631054702306423">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
+    <!-- no translation found for undo (2902438994196400565) -->
+    <skip />
+    <!-- no translation found for copy_preparing (5326063807006898223) -->
+    <skip />
+    <string name="compress_preparing" msgid="6650018601382062672">"সংকুচিত কৰিবলৈ প্ৰস্তুত কৰি থকা হৈছে…"</string>
+    <string name="extract_preparing" msgid="58266275455027829">"আহৰণ কৰিবলৈ সাজু কৰি থকা হৈছে…"</string>
+    <!-- no translation found for move_preparing (8742573245485449429) -->
+    <skip />
+    <!-- no translation found for delete_preparing (6513863752916028147) -->
+    <skip />
+    <!-- no translation found for delete_progress (2627631054702306423) -->
+    <skip />
     <plurals name="copy_error_notification_title" formatted="false" msgid="3188432450429390963">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু প্ৰতিলিপি কৰিব পৰা নগ\'ল</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু প্ৰতিলিপি কৰিব পৰা নগ\'ল</item>
@@ -134,8 +202,10 @@
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচিব পৰা নগ\'ল</item>
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচিব পৰা নগ\'ল</item>
     </plurals>
-    <string name="notification_touch_for_details" msgid="2385563502445129570">"সবিশেষ চাবলৈ টিপক"</string>
-    <string name="close" msgid="905969391788869975">"বন্ধ কৰক"</string>
+    <!-- no translation found for notification_touch_for_details (2385563502445129570) -->
+    <skip />
+    <!-- no translation found for close (905969391788869975) -->
+    <skip />
     <plurals name="copy_failure_alert_content" formatted="false" msgid="5570549471912990536">
       <item quantity="one">এই ফাইলবোৰ প্ৰতিলিপি কৰা নহ\'ল: <xliff:g id="LIST_1">%1$s</xliff:g></item>
       <item quantity="other">এই ফাইলবোৰ প্ৰতিলিপি কৰা নহ\'ল: <xliff:g id="LIST_1">%1$s</xliff:g></item>
@@ -166,44 +236,44 @@
     </plurals>
     <string name="file_operation_rejected" msgid="4301554203329008794">"ফাইলত কাৰ্য কৰিব নোৱাৰি।"</string>
     <string name="file_operation_error" msgid="2234357335716533795">"ফাইলত কাৰ্য কৰিব পৰা নগ\'ল।"</string>
-    <string name="rename_error" msgid="6700093173508118635">"নথিৰ নাম সলনি কৰিব পৰা নগ\'ল"</string>
-    <string name="menu_eject_root" msgid="9215040039374893613">"বাহিৰলৈ উলিয়াওক"</string>
-    <string name="notification_copy_files_converted_title" msgid="6916768494891833365">"কিছুমান ফাইল ৰূপান্তৰ কৰা হ\'ল"</string>
-    <string name="open_external_dialog_request" msgid="8173558471322861268">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>ক <xliff:g id="STORAGE"><i>^3</i></xliff:g>ৰ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> চাবলৈ অনুমতি দিবনে?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="2240992164087948176">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>ক <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> চাবলৈ অনুমতি দিবনে?"</string>
-    <string name="open_external_dialog_root_request" msgid="6776729293982633">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>ক <xliff:g id="STORAGE"><i>^2</i></xliff:g>ত থকা ফট\' আৰু ভিডিঅ\'সমূহকে ধৰি আপোনাৰ ডেটা চাবলৈ অনুমতি দিবনে?"</string>
-    <string name="never_ask_again" msgid="525908236522201138">"পুনৰাই নুসুধিব"</string>
-    <string name="allow" msgid="1275746941353040309">"অনুমতি দিয়ক"</string>
-    <string name="deny" msgid="5127201668078153379">"অস্বীকাৰ কৰক"</string>
-    <plurals name="elements_selected" formatted="false" msgid="4448165978637163692">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বাছনি কৰা হ\'ল</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বাছনি কৰা হ\'ল</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="5932571296037626279">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="8338069763240613258">"\"<xliff:g id="NAME">%1$s</xliff:g>\"ক মচিবনে?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="9084085260877704140">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ফ\'ল্ডাৰ আৰু ইয়াৰ সমলসমূহ মচিবনে?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="4866664063250034142">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা ফাইল মচিবনে?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা ফাইল মচিবনে?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="1028946402799686388">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা ফ\'ল্ডাৰ আৰু ইয়াৰ সমলসমূহ মচিবনে?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা ফ\'ল্ডাৰ আৰু ইয়াৰ সমলসমূহ মচিবনে?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="7285090426511028179">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচিবনে?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টা বস্তু মচিবনে?</item>
-    </plurals>
+    <!-- no translation found for rename_error (6700093173508118635) -->
+    <skip />
+    <!-- no translation found for menu_eject_root (9215040039374893613) -->
+    <skip />
+    <!-- no translation found for notification_copy_files_converted_title (6916768494891833365) -->
+    <skip />
+    <!-- no translation found for open_external_dialog_request (8173558471322861268) -->
+    <skip />
+    <!-- no translation found for open_external_dialog_request_primary_volume (2240992164087948176) -->
+    <skip />
+    <!-- no translation found for open_external_dialog_root_request (6776729293982633) -->
+    <skip />
+    <!-- no translation found for never_ask_again (525908236522201138) -->
+    <skip />
+    <!-- no translation found for allow (1275746941353040309) -->
+    <skip />
+    <!-- no translation found for deny (5127201668078153379) -->
+    <skip />
+    <!-- no translation found for elements_selected (4448165978637163692) -->
+    <!-- no translation found for elements_dragged (5932571296037626279) -->
+    <!-- no translation found for delete_filename_confirmation_message (8338069763240613258) -->
+    <skip />
+    <!-- no translation found for delete_foldername_confirmation_message (9084085260877704140) -->
+    <skip />
+    <!-- no translation found for delete_files_confirmation_message (4866664063250034142) -->
+    <!-- no translation found for delete_folders_confirmation_message (1028946402799686388) -->
+    <!-- no translation found for delete_items_confirmation_message (7285090426511028179) -->
     <string name="images_shortcut_label" msgid="2545168016070493574">"প্ৰতিচ্ছবিবোৰ"</string>
     <string name="archive_loading_failed" msgid="7243436722828766996">"ব্ৰাউজ কৰিবলৈ আৰ্কাইভ খুলিব পৰা নগ\'ল। ফাইলটো হয় ব্যৱহাৰযোগ্য হৈ থকা নাই বা ব্যৱহাৰ কৰিব পৰা ফৰ্মেটত নাই।"</string>
     <string name="name_conflict" msgid="28407269328862986">"এই নামৰ অইন এটা ফাইল ইতিমধ্যে আছে।"</string>
-    <string name="authentication_required" msgid="8030880723643436099">"এই নিৰ্দেশাৱলী চাবলৈ <xliff:g id="NAME">%1$s</xliff:g>ত ছাইন ইন কৰক"</string>
-    <string name="cant_display_content" msgid="8633226333229417237">"সমলবোৰ দেখুওৱাব নোৱাৰি"</string>
-    <string name="sign_in" msgid="6253762676723505592">"ছাইন ইন কৰক"</string>
+    <!-- no translation found for authentication_required (8030880723643436099) -->
+    <skip />
+    <!-- no translation found for cant_display_content (8633226333229417237) -->
+    <skip />
+    <!-- no translation found for sign_in (6253762676723505592) -->
+    <skip />
     <string name="new_archive_file_name" msgid="1604650338077249838">"আৰ্কাইভ<xliff:g id="EXTENSION">%s</xliff:g>"</string>
     <string name="overwrite_file_confirmation_message" msgid="2496109652768222716">"<xliff:g id="NAME">%1$s</xliff:g>ক অভাৰৰাইট কৰিবনে?"</string>
-    <string name="continue_in_background" msgid="1974214559047793331">"নেপথ্যত অব্যাহত ৰাখক"</string>
+    <!-- no translation found for continue_in_background (1974214559047793331) -->
+    <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 8d924a4..8625c7e 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -84,7 +84,7 @@
     <string name="toast_no_application" msgid="7555319548595113121">"Nije moguće otvoriti fajl"</string>
     <string name="toast_view_in_archives_unsupported" msgid="1923221390170964845">"Nije moguće otvoriti fajlove u arhivama"</string>
     <string name="toast_failed_delete" msgid="3453846588205817591">"Nije moguće izbrisati neke dokumente"</string>
-    <string name="share_via" msgid="8725082736005677161">"Dijeli koristeći aplikaciju"</string>
+    <string name="share_via" msgid="8725082736005677161">"Dijeli pomoću aplikacije"</string>
     <string name="copy_notification_title" msgid="52256435625098456">"Kopiraju se fajlovi"</string>
     <string name="compress_notification_title" msgid="6830195148113751021">"Kompresovanje fajlova"</string>
     <string name="extract_notification_title" msgid="5067393961754430469">"Izdvajanje fajlova"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 315a5af..8ffcdbc 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -112,11 +112,11 @@
       <item quantity="one">Deleting <xliff:g id="COUNT_0">%1$d</xliff:g> item.</item>
     </plurals>
     <string name="undo" msgid="2902438994196400565">"Undo"</string>
-    <string name="copy_preparing" msgid="4759516490222449324">"Preparing..."</string>
-    <string name="compress_preparing" msgid="7401605598969019696">"Preparing..."</string>
-    <string name="extract_preparing" msgid="4796626960061745796">"Preparing..."</string>
-    <string name="move_preparing" msgid="6504239656430530761">"Preparing..."</string>
-    <string name="delete_preparing" msgid="7339349837842802508">"Preparing..."</string>
+    <string name="copy_preparing" msgid="5326063807006898223">"Preparing for copy…"</string>
+    <string name="compress_preparing" msgid="6650018601382062672">"Preparing for compress…"</string>
+    <string name="extract_preparing" msgid="58266275455027829">"Preparing for extract…"</string>
+    <string name="move_preparing" msgid="8742573245485449429">"Preparing for move…"</string>
+    <string name="delete_preparing" msgid="6513863752916028147">"Preparing to delete…"</string>
     <string name="delete_progress" msgid="2627631054702306423">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
     <plurals name="copy_error_notification_title" formatted="false" msgid="3188432450429390963">
       <item quantity="other">Couldn’t copy <xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 073ce47..9e727f9 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -112,11 +112,11 @@
       <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‏‎Deleting ‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ item.‎‏‎‎‏‎</item>
     </plurals>
     <string name="undo" msgid="2902438994196400565">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‎‏‎‏‎Undo‎‏‎‎‏‎"</string>
-    <string name="copy_preparing" msgid="4759516490222449324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‎‎Preparing...‎‏‎‎‏‎"</string>
-    <string name="compress_preparing" msgid="7401605598969019696">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎Preparing...‎‏‎‎‏‎"</string>
-    <string name="extract_preparing" msgid="4796626960061745796">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‎‎Preparing...‎‏‎‎‏‎"</string>
-    <string name="move_preparing" msgid="6504239656430530761">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‎‎‏‎Preparing...‎‏‎‎‏‎"</string>
-    <string name="delete_preparing" msgid="7339349837842802508">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎Preparing...‎‏‎‎‏‎"</string>
+    <string name="copy_preparing" msgid="5326063807006898223">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‏‏‎Preparing for copy…‎‏‎‎‏‎"</string>
+    <string name="compress_preparing" msgid="6650018601382062672">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎Preparing for compress…‎‏‎‎‏‎"</string>
+    <string name="extract_preparing" msgid="58266275455027829">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‎Preparing for extract…‎‏‎‎‏‎"</string>
+    <string name="move_preparing" msgid="8742573245485449429">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎‏‎‏‎Preparing for move…‎‏‎‎‏‎"</string>
+    <string name="delete_preparing" msgid="6513863752916028147">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎Preparing for delete…‎‏‎‎‏‎"</string>
     <string name="delete_progress" msgid="2627631054702306423">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ / ‎‏‎‎‏‏‎<xliff:g id="TOTALCOUNT">%2$d</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <plurals name="copy_error_notification_title" formatted="false" msgid="3188432450429390963">
       <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎Couldn’t copy ‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ items‎‏‎‎‏‎</item>
diff --git a/res/values-eu/inspector_strings.xml b/res/values-eu/inspector_strings.xml
index 24b9b4a..9f51a8c 100644
--- a/res/values-eu/inspector_strings.xml
+++ b/res/values-eu/inspector_strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="inspector_title" msgid="1924760928091740238">"Informazioa"</string>
     <string name="inspector_load_error" msgid="7522190243413249291">"Ezin izan da kargatu fitxategiaren informazioa"</string>
-    <string name="inspector_debug_section" msgid="2576052661505700421">"Arazte-informazioa (garatzaileentzat soilik)"</string>
+    <string name="inspector_debug_section" msgid="2576052661505700421">"Arazketa-informazioa (garatzaileentzat soilik)"</string>
     <string name="inspector_debug_metadata_section" msgid="5875140675600744846">"Prozesatu gabeko metadatuak: <xliff:g id="METADATATYPE">%1$s</xliff:g>"</string>
     <string name="inspector_metadata_section" msgid="6077622515328240575">"Multimedia-elementuaren xehetasunak"</string>
     <string name="handler_app_file_opens_with" msgid="5272329600389613550">"Mota honetako fitxategiak aplikazio honekin ireki daitezke:"</string>
diff --git a/res/values-or/inspector_strings.xml b/res/values-or/inspector_strings.xml
deleted file mode 100644
index 0e53ff5..0000000
--- a/res/values-or/inspector_strings.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2017 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="inspector_title" msgid="1924760928091740238">"ସୂଚନା"</string>
-    <string name="inspector_load_error" msgid="7522190243413249291">"ଫାଇଲ୍‍ ସୂଚନା ଲୋଡ୍‍ କରିହେଲା ନାହିଁ"</string>
-    <string name="inspector_debug_section" msgid="2576052661505700421">"ଡିବଗ୍‍ ସୂଚନା (କେବଳ ଡିଭାଇସ୍‍)"</string>
-    <string name="inspector_debug_metadata_section" msgid="5875140675600744846">"ମୂଳ ମେଟାଡାଟା: <xliff:g id="METADATATYPE">%1$s</xliff:g>"</string>
-    <string name="inspector_metadata_section" msgid="6077622515328240575">"ମିଡିଆ ବିବରଣୀ"</string>
-    <string name="handler_app_file_opens_with" msgid="5272329600389613550">"ଏହି ପ୍ରକାରର ଫାଇଲ୍‍ ଏଥିରେ ଖୋଲେ"</string>
-    <string name="handler_app_belongs_to" msgid="5444507329303253553">"ଏହି ଫାଇଲ୍‌କୁ ଦେଇଛନ୍ତି"</string>
-    <string name="handler_app_not_selected" msgid="1294439257183908786">"ଚୟନ କରାଯାଇନାହିଁ"</string>
-    <string name="handler_app_unknown" msgid="5911661530593229287">"ଅଜଣା"</string>
-    <string name="metadata_dimensions" msgid="6112907724016659801">"ମାପ"</string>
-    <string name="metadata_dimensions_format" msgid="6138765871412005962">"<xliff:g id="WIDTH">%1$d</xliff:g> x <xliff:g id="HEIGHT">%2$d</xliff:g> - <xliff:g id="MEGAPIXELS">%3$,.1f</xliff:g>MP"</string>
-    <string name="metadata_coordinates" msgid="6897383227370702734">"ନିର୍ଦ୍ଦେଶାଙ୍କ"</string>
-    <string name="metadata_coordinates_format" msgid="1402724596764547761">"<xliff:g id="LATITUDE">%1$,.3f</xliff:g>, <xliff:g id="LONGITUDE">%2$,.3f</xliff:g>"</string>
-    <string name="metadata_altitude" msgid="8063792127436794294">"ଉଚ୍ଚତା"</string>
-    <string name="metadata_camera" msgid="2363009732801281319">"କ୍ୟାମେରା"</string>
-    <string name="metadata_camera_format" msgid="1494489751904311612">"<xliff:g id="MAKE">%1$s</xliff:g> <xliff:g id="MODEL">%2$s</xliff:g>"</string>
-    <string name="metadata_aperture" msgid="6538741952698935357">"ଆପାର୍ଚର୍‍"</string>
-    <string name="metadata_shutter_speed" msgid="8204739885103326131">"ଶଟର୍‌ ସ୍ପୀଡ୍‌"</string>
-    <string name="metadata_duration" msgid="3115494422055472715">"ଅବଧି"</string>
-    <string name="metadata_date_time" msgid="1090351199248114406">"ଫଟୋ ଉଠାଯାଇଥିବା ସମୟ"</string>
-    <string name="metadata_focal_length" msgid="3440735161407699893">"ଫୋକସ୍‌ ଦୈର୍ଘ୍ୟ"</string>
-    <string name="metadata_focal_format" msgid="8542211707962355623">"<xliff:g id="LENGTH">%1$.2f </xliff:g>ମିମି"</string>
-    <string name="metadata_iso_speed_ratings" msgid="1699781252899759058">"ISO ସମତୁଲ୍ୟ"</string>
-    <string name="metadata_iso_format" msgid="4153285204012694861">"ISO <xliff:g id="ISO_SPEED">%1$d</xliff:g>"</string>
-    <string name="metadata_artist" msgid="8972421485694988540">"କଳାକାର"</string>
-    <string name="metadata_composer" msgid="4696926808308256056">"କମ୍ପୋଜର୍‍"</string>
-    <string name="metadata_album" msgid="1661699531214720236">"ଆଲବମ୍"</string>
-    <string name="metadata_address" msgid="1849921023707744640">"ଲୋକେଶନ୍‌"</string>
-    <string name="debug_stream_types" msgid="2088565280360139333">"ଷ୍ଟ୍ରୀମ୍‍ର ପ୍ରକାର"</string>
-    <string name="debug_raw_size" msgid="7487139640175650185">"ମୂଳ ଆକାର (ବାଇଟ୍ସ)"</string>
-</resources>
diff --git a/res/values-or/mimes.xml b/res/values-or/mimes.xml
deleted file mode 100644
index a881620..0000000
--- a/res/values-or/mimes.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2017 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="generic_extention_file_type" msgid="5947398320635880291">"<xliff:g id="EXTENSION">%1$s</xliff:g> ଫାଇଲ୍‍"</string>
-    <string name="generic_file_type" msgid="1415477154743494280">"ଫାଇଲ୍"</string>
-    <string name="image_file_type" msgid="3011633523704887793">"ଇମେଜ୍‍"</string>
-    <string name="image_extension_file_type" msgid="992617216367594851">"<xliff:g id="FILETYPE">%1$s</xliff:g> ଇମେଜ୍‍"</string>
-    <string name="audio_file_type" msgid="3790525543519624632">"ଅଡିଓ"</string>
-    <string name="audio_extension_file_type" msgid="6334293531796491314">"<xliff:g id="FILETYPE">%1$s</xliff:g> ଅଡିଓ"</string>
-    <string name="video_file_type" msgid="7290473366042482095">"ଭିଡିଓ"</string>
-    <string name="video_extension_file_type" msgid="6352763029831291433">"<xliff:g id="FILETYPE">%1$s</xliff:g> ଭିଡିଓ"</string>
-    <string name="archive_file_type" msgid="1463432996680398798">"<xliff:g id="FILETYPE">%1$s</xliff:g> ଆର୍କାଇଭ୍‌"</string>
-    <string name="apk_file_type" msgid="6004275470389462277">"Android ଆପ୍ଲିକେଶନ୍‌"</string>
-    <string name="txt_file_type" msgid="4677767777860724696">"କେବଳ ଟେକ୍ସଟ୍‌"</string>
-    <string name="html_file_type" msgid="2034229603117527970">"HTML ଡକୁମେଣ୍ଟ"</string>
-    <string name="pdf_file_type" msgid="3382260303795039988">"PDF ଡକୁମେଣ୍ଟ"</string>
-    <string name="word_file_type" msgid="2366349268129894972">"Word ଡକୁମେଣ୍ଟ"</string>
-    <string name="ppt_file_type" msgid="2570841599899893925">"ପାୱାର୍‌ପଏଣ୍ଟ ପ୍ରେଜେଣ୍ଟେଶନ୍‌"</string>
-    <string name="excel_file_type" msgid="8363932635044575463">"Excel ସ୍ପ୍ରେଡଶୀଟ୍‍"</string>
-    <string name="gdoc_file_type" msgid="242328101061228382">"Google ଡକୁମେଣ୍ଟ"</string>
-    <string name="gsheet_file_type" msgid="8055591929133067952">"Google ସ୍ପ୍ରେଡଶୀଟ୍‌"</string>
-    <string name="gslides_file_type" msgid="8359750985956690177">"Google ପ୍ରେଜେଣ୍ଟେଶନ୍‌"</string>
-    <string name="gdraw_file_type" msgid="655688091676820371">"Google ଡ୍ରଇଙ୍ଗ"</string>
-    <string name="gtable_file_type" msgid="7332773878374650335">"Google ଟେବଲ୍‌"</string>
-    <string name="gform_file_type" msgid="4803176103746107611">"Google ଫର୍ମ"</string>
-    <string name="gmap_file_type" msgid="6684180781808007016">"Google ମ୍ୟାପ୍‌"</string>
-    <string name="gsite_file_type" msgid="3742812051249149526">"Google ସାଇଟ୍"</string>
-    <string name="directory_type" msgid="2702987727566226354">"ଫୋଲ୍ଡର୍"</string>
-</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
deleted file mode 100644
index d425051..0000000
--- a/res/values-or/strings.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="files_label" msgid="771781190045103748">"ଫାଇଲ୍‍"</string>
-    <string name="downloads_label" msgid="5462789470049501103">"ଡାଉନଲୋଡ୍‌"</string>
-    <!-- no translation found for app_label (8089292432455111409) -->
-    <skip />
-    <!-- no translation found for launcher_label (799410258349837668) -->
-    <skip />
-    <string name="title_open" msgid="3165686459158020921">"ଏଥିରୁ ଖୋଲନ୍ତୁ"</string>
-    <string name="title_save" msgid="4384490653102710025">"ଏଥିରେ ସେଭ୍‍ କରନ୍ତୁ"</string>
-    <string name="menu_create_dir" msgid="2413624798689091042">"ନୂଆ ଫୋଲ୍ଡର୍‌"</string>
-    <string name="menu_grid" msgid="1453636521731880680">"ଗ୍ରୀଡ୍‍ ଭ୍ୟୁ"</string>
-    <string name="menu_list" msgid="6714267452146410402">"ତାଲିକା ଭ୍ୟୁ"</string>
-    <string name="menu_search" msgid="1876699106790719849">"ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
-    <string name="menu_settings" msgid="6520844520117939047">"ଷ୍ଟୋରେଜ୍‌ ସେଟିଙ୍ଗ"</string>
-    <string name="menu_open" msgid="9092138100049759315">"ଖୋଲନ୍ତୁ"</string>
-    <string name="menu_open_with" msgid="5507647065467520229">"ଏଥିରେ ଖୋଲନ୍ତୁ"</string>
-    <string name="menu_open_in_new_window" msgid="6686563636123311276">"ନୂଆ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ"</string>
-    <string name="menu_save" msgid="5195367497138965168">"ସେଭ୍‌ କରନ୍ତୁ"</string>
-    <string name="menu_share" msgid="4307140947108068356">"ଶେୟାର୍‍ କରନ୍ତୁ"</string>
-    <string name="menu_delete" msgid="1022254131543256626">"ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
-    <string name="menu_select_all" msgid="7600576812185570403">"ସବୁ ଚୟନ କରନ୍ତୁ"</string>
-    <string name="menu_copy" msgid="7404820171352314754">"ଏଥିକୁ କପୀ କରନ୍ତୁ…"</string>
-    <string name="menu_move" msgid="2310760789561129882">"ଏଥିକୁ ନିଅନ୍ତୁ…"</string>
-    <string name="menu_compress" msgid="37539111904724188">"ଛୋଟ କରନ୍ତୁ"</string>
-    <string name="menu_extract" msgid="8171946945982532262">"ଏଠାକୁ ଏକ୍ସଟ୍ରାକ୍ଟ କରନ୍ତୁ…"</string>
-    <string name="menu_rename" msgid="1883113442688817554">"ନାମ ବଦଳାନ୍ତୁ"</string>
-    <string name="menu_inspect" msgid="7279855349299446224">"ସୂଚନା ପାଆନ୍ତୁ"</string>
-    <string name="menu_view_in_owner" msgid="7228948660557554770">"<xliff:g id="SOURCE">%1$s</xliff:g>ରେ ଦେଖନ୍ତୁ"</string>
-    <string name="menu_new_window" msgid="2947837751796109126">"ନୂଆ ୱିଣ୍ଡୋ"</string>
-    <string name="menu_cut_to_clipboard" msgid="2878752142015026229">"କଟ୍‌ କରନ୍ତୁ"</string>
-    <string name="menu_copy_to_clipboard" msgid="5064081159073330776">"କପୀ କରନ୍ତୁ"</string>
-    <string name="menu_paste_from_clipboard" msgid="360947260414135827">"ପେଷ୍ଟ କରନ୍ତୁ"</string>
-    <string name="menu_paste_into_folder" msgid="8000644546983240101">"ଫୋଲ୍ଡର୍‌ରେ ପେଷ୍ଟ କରନ୍ତୁ"</string>
-    <string name="menu_advanced_show" msgid="7558626506462906726">"ଇଣ୍ଟର୍ନଲ୍‌ ଷ୍ଟୋରେଜ୍‌କୁ ଦେଖାନ୍ତୁ"</string>
-    <string name="menu_advanced_hide" msgid="6488381508009246334">"ଇଣ୍ଟର୍ନଲ୍‌ ଷ୍ଟୋରେଜ୍‌କୁ ଲୁଚାନ୍ତୁ"</string>
-    <string name="button_select" msgid="240863497069321364">"ଚୟନ କରନ୍ତୁ"</string>
-    <string name="button_copy" msgid="8219059853840996027">"କପୀ କରନ୍ତୁ"</string>
-    <string name="button_compress" msgid="8951561310857223966">"ଛୋଟ କରନ୍ତୁ"</string>
-    <string name="button_extract" msgid="1038674453689912247">"ଏକ୍ସଟ୍ରାକ୍ଟ କରନ୍ତୁ"</string>
-    <string name="button_move" msgid="8596460499325291272">"ନେଇଯାଆନ୍ତୁ"</string>
-    <string name="button_dismiss" msgid="7235249361023803349">"ଖାରଜ କରନ୍ତୁ"</string>
-    <string name="button_retry" msgid="4011461781916631389">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
-    <string name="button_clear" msgid="5412304437764369441">"ଖାଲି କରନ୍ତୁ"</string>
-    <string name="button_show_provider" msgid="6905880493806292753">"ପ୍ରଦାତା ସର୍ଭିସ୍‌ରେ ଦେଖାନ୍ତୁ"</string>
-    <string name="not_sorted" msgid="7813496644889115530">"କ୍ରମବଦ୍ଧ କରାଯାଇନାହିଁ"</string>
-    <string name="sort_dimension_name" msgid="6325591541414177579">"ନାମ"</string>
-    <string name="sort_dimension_summary" msgid="7724534446881397860">"ସାରାଂଶ"</string>
-    <string name="sort_dimension_file_type" msgid="5779709622922085381">"ପ୍ରକାର"</string>
-    <string name="sort_dimension_size" msgid="2190547351159472884">"ଆକାର"</string>
-    <string name="sort_dimension_date" msgid="4231005651895254033">"ଗତଥର ସଂଶୋଧିତ"</string>
-    <string name="directory_items" msgid="6645621978998614003">"ଆଇଟମ୍‌ଗୁଡ଼ିକର ସଂଖ୍ୟା"</string>
-    <string name="sort_direction_ascending" msgid="5882787683763248102">"ସାନରୁ ବଡ଼ କ୍ରମରେ"</string>
-    <string name="sort_direction_descending" msgid="1729187589765894076">"ବଡ଼ରୁ ସାନ କ୍ରମରେ"</string>
-    <string name="drawer_open" msgid="8071673398187261741">"ରୁଟ୍‍ ଦେଖାନ୍ତୁ"</string>
-    <string name="drawer_close" msgid="4263880768630848848">"ରୁଟ୍‍ ଲୁଚାନ୍ତୁ"</string>
-    <string name="save_error" msgid="8631128801982095782">"ଡକୁମେଣ୍ଟକୁ ସେଭ୍‍ କରିପାରିଲା ନାହିଁ"</string>
-    <string name="create_error" msgid="3092144450044861994">"ଫୋଲ୍ଡର୍‍ ତିଆରି କରିହେଲା ନାହିଁ"</string>
-    <string name="query_error" msgid="6625421453613879336">"ଏହି ସମୟରେ କଣ୍ଟେଣ୍ଟ ଲୋଡ୍‍ କରିପାରିବ ନାହିଁ"</string>
-    <string name="root_recent" msgid="1080156975424341623">"କିଛି ସମୟ ପୂର୍ବରୁ"</string>
-    <string name="root_available_bytes" msgid="8269870862691408864">"<xliff:g id="SIZE">%1$s</xliff:g> ଖାଲି ଅଛି"</string>
-    <string name="root_type_service" msgid="6521366147466512289">"ଷ୍ଟୋରେଜ୍‍ ସେବା"</string>
-    <string name="root_type_shortcut" msgid="6059343175525442279">"ଶର୍ଟକଟ୍‍"</string>
-    <string name="root_type_device" msgid="1713604128005476585">"ଡିଭାଇସ୍‌"</string>
-    <string name="root_type_apps" msgid="8646073235029886342">"ଅଧିକ ଆପ୍‍"</string>
-    <string name="empty" msgid="5300254272613103004">"କୌଣସି ଆଇଟମ୍ ନାହିଁ"</string>
-    <string name="no_results" msgid="2371026325236359209">"%1$sରେ କିଛି ମେଳ ହେଉନାହିଁ"</string>
-    <string name="toast_no_application" msgid="7555319548595113121">"ଫାଇଲ୍‍ ଖୋଲିହେବ ନାହିଁ"</string>
-    <string name="toast_view_in_archives_unsupported" msgid="1923221390170964845">"ସଂଗ୍ରହରେ ଥିବା ଫାଇଲ୍‍ ଖୋଲିପାରିବ ନାହିଁ"</string>
-    <string name="toast_failed_delete" msgid="3453846588205817591">"କିଛି ଡକୁମେଣ୍ଟ ଡିଲିଟ୍‍ କରିହେବ ନାହିଁ"</string>
-    <string name="share_via" msgid="8725082736005677161">"ଏହା ମାଧ୍ୟମରେ ଶେୟାର୍‌ କରନ୍ତୁ"</string>
-    <string name="copy_notification_title" msgid="52256435625098456">"ଫାଇଲ୍‌ଗୁଡ଼ିକ କପୀ କରାଯାଉଛି"</string>
-    <string name="compress_notification_title" msgid="6830195148113751021">"ଫାଇଲ୍‍ ଛୋଟ କରାଯାଉଛି"</string>
-    <string name="extract_notification_title" msgid="5067393961754430469">"ଫାଇଲ୍‍ ଏକ୍ସଟ୍ରାକ୍ଟ କରିବା"</string>
-    <string name="move_notification_title" msgid="3173424987049347605">"ଫାଇଲ୍‌ଗୁଡ଼ିକ ନିଆଯାଉଛି"</string>
-    <string name="delete_notification_title" msgid="2512757431856830792">"ଫାଇଲ୍‍ ଡିଲିଟ୍‌ କରାଯାଉଛି"</string>
-    <string name="copy_remaining" msgid="5390517377265177727">"<xliff:g id="DURATION">%s</xliff:g> ଅବଶିଷ୍ଟ"</string>
-    <plurals name="copy_begin" formatted="false" msgid="151184708996738192">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍ କପୀ କରାଯାଉଛି।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍ କପୀ କରାଯାଉଛି।</item>
-    </plurals>
-    <plurals name="compress_begin" formatted="false" msgid="3534158317098678895">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଛୋଟ କରାଯାଉଛି।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଛୋଟ କରାଯାଉଛି।</item>
-    </plurals>
-    <plurals name="extract_begin" formatted="false" msgid="1006380679562903749">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଏକ୍ସଟ୍ରାକ୍ଟ କରାଯାଉଛି।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଏକ୍ସଟ୍ରାକ୍ଟ କରାଯାଉଛି।</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="1464229874265756956">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ନିଆଯାଉଛି।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ନିଆଯାଉଛି।</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="1729138001178158901">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରାଯାଉଛି।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରାଯାଉଛି।</item>
-    </plurals>
-    <string name="undo" msgid="2902438994196400565">"ପୂର୍ବପରି କରନ୍ତୁ"</string>
-    <string name="copy_preparing" msgid="4759516490222449324">"ପ୍ରସ୍ତୁତ କରାଯାଉଛି…"</string>
-    <string name="compress_preparing" msgid="7401605598969019696">"ପ୍ରସ୍ତୁତ କରାଯାଉଛି…"</string>
-    <string name="extract_preparing" msgid="4796626960061745796">"ପ୍ରସ୍ତୁତ କରାଯାଉଛି…"</string>
-    <string name="move_preparing" msgid="6504239656430530761">"ପ୍ରସ୍ତୁତ କରାଯାଉଛି…"</string>
-    <string name="delete_preparing" msgid="7339349837842802508">"ପ୍ରସ୍ତୁତ କରାଯାଉଛି…"</string>
-    <string name="delete_progress" msgid="2627631054702306423">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="3188432450429390963">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ କପୀ କରାଯାଇପାରିଲା ନାହିଁ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ କପୀ କରାଯାଇପାରିଲା ନାହିଁ</item>
-    </plurals>
-    <plurals name="compress_error_notification_title" formatted="false" msgid="3043630066678213644">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଛୋଟ କରାଯାଇପାରିଲା ନାହିଁ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଛୋଟ କରାଯାଇପାରିଲା ନାହିଁ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2185736082411854754">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ନିଆଯାଇପାରିଲା ନାହିଁ।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ନିଆଯାଇପାରିଲା ନାହିଁ।</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7568122018481625267">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରାଯାଇପାରିଲା ନାହିଁ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରାଯାଇପାରିଲା ନାହିଁ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="2385563502445129570">"ବିବରଣୀ ଦେଖିବା ପାଇଁ ଟାପ୍‍ କରନ୍ତୁ"</string>
-    <string name="close" msgid="905969391788869975">"ବନ୍ଦ କରନ୍ତୁ"</string>
-    <plurals name="copy_failure_alert_content" formatted="false" msgid="5570549471912990536">
-      <item quantity="other">ଏହି ଫାଇଲ୍‍ କପୀ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ କପୀ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="compress_failure_alert_content" formatted="false" msgid="5760632881868842400">
-      <item quantity="other">ଏହି ଫାଇଲଗୁଡ଼ିକ ଛୋଟ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ ଛୋଟ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="extract_failure_alert_content" formatted="false" msgid="7572748127571720803">
-      <item quantity="other">ଏହି ଫାଇଲଗୁଡ଼ିକ ଏକ୍ସଟ୍ରାକ୍ଟ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ ଏକ୍ସଟ୍ରାକ୍ଟ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="move_failure_alert_content" formatted="false" msgid="2747390342670799196">
-      <item quantity="other">ଏହି ଫାଇଲଗୁଡ଼ିକ ନିଆଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ ନିଆଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="delete_failure_alert_content" formatted="false" msgid="6122372614839711711">
-      <item quantity="other">ଏହି ଫାଇଲଗୁଡ଼ିକ ଡିଲିଟ୍‍ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ ଡିଲିଟ୍‍ କରାଯାଇପାରିଲା ନାହିଁ: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="copy_converted_warning_content" formatted="false" msgid="7433742181712126588">
-      <item quantity="other">ଏହି ଫାଇଲଗୁଡ଼ିକ ଅନ୍ୟ ଫର୍ମାଟରେ ବଦଳାଗଲା: <xliff:g id="LIST_1">%1$s</xliff:g></item>
-      <item quantity="one">ଏହି ଫାଇଲ୍‍ ଅନ୍ୟ ଫର୍ମାଟରେ ବଦଳାଗଲା: <xliff:g id="LIST_0">%1$s</xliff:g></item>
-    </plurals>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="4847061634862926902">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ କ୍ଲିପ୍‌ବୋର୍ଡକୁ କପୀ କରାଗଲା</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ କ୍ଲିପ୍‌ବୋର୍ଡକୁ କପୀ କରାଗଲା</item>
-    </plurals>
-    <string name="file_operation_rejected" msgid="4301554203329008794">"ଫାଇଲ୍‍ ଅପରେସନ୍‍ ସପୋର୍ଟ କଲାନାହିଁ।"</string>
-    <string name="file_operation_error" msgid="2234357335716533795">"ଫାଇଲ୍ ଅପରେସନ୍‍ କରାଯାଇପାରିଲା ନାହିଁ"</string>
-    <string name="rename_error" msgid="6700093173508118635">"ଡକୁମେଣ୍ଟର ନାମ ବଦଳାଇବାରେ ବିଫଳ ହେଲା"</string>
-    <string name="menu_eject_root" msgid="9215040039374893613">"ବାହାର କରନ୍ତୁ"</string>
-    <string name="notification_copy_files_converted_title" msgid="6916768494891833365">"କିଛି ଫାଇଲ୍‍ ବଦଳାଯାଇଥିଲା"</string>
-    <string name="open_external_dialog_request" msgid="8173558471322861268">"<xliff:g id="STORAGE"><i>^3</i></xliff:g>ରେ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ଡିରେକ୍ଟୋରୀକୁ <xliff:g id="APPNAME"><b>^1</b></xliff:g>ର ଆକ୍ସେସ୍‍ ମଞ୍ଜୁରୀ ଦେବେ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="2240992164087948176">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ଡିରେକ୍ଟୋରୀକୁ <xliff:g id="APPNAME"><b>^1</b></xliff:g>ର ଆକ୍ସେସ୍‍ ମଞ୍ଜୁରୀ ଦେବେ?"</string>
-    <string name="open_external_dialog_root_request" msgid="6776729293982633">"ଫଟୋ ଓ ଭିଡିଓ ସମେତ <xliff:g id="STORAGE"><i>^2</i></xliff:g>ରେ, ଆପଣଙ୍କ ଡାଟାକୁ <xliff:g id="APPNAME"><b>^1</b></xliff:g>ର ଆକ୍ସେସ୍‍ ମଞ୍ଜୁରୀ ଦେବେ?"</string>
-    <string name="never_ask_again" msgid="525908236522201138">"ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
-    <string name="allow" msgid="1275746941353040309">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
-    <string name="deny" msgid="5127201668078153379">"ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="4448165978637163692">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଚୟନିତ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଚୟନିତ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="5932571296037626279">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="8338069763240613258">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ଡିଲିଟ୍‍ କରିବେ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="9084085260877704140">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ଫୋଲ୍ଡର୍‍ ଓ ତାହାର କଣ୍ଟେଣ୍ଟ ଡିଲିଟ୍‍ କରିବେ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="4866664063250034142">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଡିଲିଟ୍‍ କରିବେ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଫାଇଲ୍‍ ଡିଲିଟ୍‍ କରିବେ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="1028946402799686388">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଫୋଲ୍ଡର୍‍ ଓ ସେଗୁଡ଼ିକର କଣ୍ଟେଣ୍ଟ ଡିଲିଟ୍‍ କରିବେ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଫୋଲ୍ଡର୍‍ ଓ ତାହାର କଣ୍ଟେଣ୍ଟ ଡିଲିଟ୍‍ କରିବେ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="7285090426511028179">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରିବେ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆଇଟମ୍‍ ଡିଲିଟ୍‍ କରିବେ?</item>
-    </plurals>
-    <string name="images_shortcut_label" msgid="2545168016070493574">"ଇମେଜ୍‌"</string>
-    <string name="archive_loading_failed" msgid="7243436722828766996">"ବ୍ରାଉଜ୍‍ କରିବା ପାଇଁ ସଂଗ୍ରହ ଖୋଲିପାରିବ ନାହିଁ। ଫାଇଲ୍‍ ଖରାପ ହୋଇଯାଇଥାଇପାରେ, କିମ୍ବା ଏହାର ଫର୍ମାଟ୍ ସପୋର୍ଟ କରୁନାହିଁ।"</string>
-    <string name="name_conflict" msgid="28407269328862986">"ଏହି ନାମରେ ଗୋଟିଏ ଫାଇଲ୍‍ ପୂର୍ବରୁ ରହିଛି।"</string>
-    <string name="authentication_required" msgid="8030880723643436099">"ଏହି ଡିରେକ୍ଟୋରୀ ଦେଖିବାକୁ, <xliff:g id="NAME">%1$s</xliff:g>ରେ ସାଇନ୍‍ କରନ୍ତୁ"</string>
-    <string name="cant_display_content" msgid="8633226333229417237">"ଜଣ୍ଟେଣ୍ଟ ଦେଖାଇ ପାରିବ ନାହିଁ"</string>
-    <string name="sign_in" msgid="6253762676723505592">"ସାଇନ୍‌-ଇନ୍ କରନ୍ତୁ"</string>
-    <string name="new_archive_file_name" msgid="1604650338077249838">"ସଂଗ୍ରହ<xliff:g id="EXTENSION">%s</xliff:g>"</string>
-    <string name="overwrite_file_confirmation_message" msgid="2496109652768222716">"<xliff:g id="NAME">%1$s</xliff:g>ଙ୍କୁ ବଦଳାଇବେ?"</string>
-    <string name="continue_in_background" msgid="1974214559047793331">"ବ୍ୟାକଗ୍ରାଉଣ୍ଡରେ ଜାରିରଖନ୍ତୁ"</string>
-</resources>
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index a5784de..bab713f 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -383,6 +383,13 @@
                 && !root.isRecents();
     }
 
+    /**
+     * Returns true if a directory can be inspected.
+     */
+    protected boolean canInspectDirectory() {
+        return false;
+    }
+
     // TODO: make navigator listen to state
     @Override
     public final void updateNavigator() {
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index 01e4619..705c35a 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -381,5 +381,9 @@
         public boolean canCreateDirectory() {
             return mActivity.canCreateDirectory();
         }
+
+        public boolean canInspectDirectory() {
+            return mActivity.canInspectDirectory();
+        }
     }
 }
diff --git a/src/com/android/documentsui/ScopedAccessActivity.java b/src/com/android/documentsui/ScopedAccessActivity.java
index 971228f..eca9127 100644
--- a/src/com/android/documentsui/ScopedAccessActivity.java
+++ b/src/com/android/documentsui/ScopedAccessActivity.java
@@ -124,8 +124,9 @@
         String directoryName =
                 getInternalDirectoryName(intent.getStringExtra(EXTRA_DIRECTORY_NAME));
         final StorageVolume volume = (StorageVolume) storageVolume;
+        final String uuid = volume.isPrimary() ? null : volume.getUuid();
         if (getScopedAccessPermissionStatus(getApplicationContext(), getCallingPackage(),
-                volume.getUuid(), directoryName) == PERMISSION_NEVER_ASK) {
+                uuid, directoryName) == PERMISSION_NEVER_ASK) {
             logValidScopedAccessRequest(this, directoryName,
                     SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED);
             setResult(RESULT_CANCELED);
@@ -180,7 +181,7 @@
                     final Bundle args = new Bundle();
                     args.putString(EXTRA_FILE, file.getAbsolutePath());
                     args.putString(EXTRA_VOLUME_LABEL, volumeLabel);
-                    args.putString(EXTRA_VOLUME_UUID, storageVolume.getUuid());
+                    args.putString(EXTRA_VOLUME_UUID, isPrimary ? null : storageVolume.getUuid());
                     args.putString(EXTRA_APP_LABEL, appLabel);
                     args.putBoolean(EXTRA_IS_ROOT, isRoot);
                     args.putBoolean(EXTRA_IS_PRIMARY, isPrimary);
diff --git a/src/com/android/documentsui/ScopedAccessProvider.java b/src/com/android/documentsui/ScopedAccessProvider.java
index e98375e..787d21e 100644
--- a/src/com/android/documentsui/ScopedAccessProvider.java
+++ b/src/com/android/documentsui/ScopedAccessProvider.java
@@ -494,7 +494,7 @@
             context.grantUriPermission(toPackage, grantedUri, grantFlags);
             cr.takePersistableUriPermission(toPackage, grantedUri, persistFlags);
         } else {
-            context.revokeUriPermission(grantedUri, grantFlags);
+            context.revokeUriPermission(toPackage, grantedUri, grantFlags);
             // There's no need to release after revoking
         }
     }
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index cec9640..e48cf9d 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -1117,6 +1117,10 @@
             if (!mModel.isLoading()) {
                 mActivity.notifyDirectoryLoaded(
                         mModel.doc != null ? mModel.doc.derivedUri : null);
+                if (mModel.doc == null) {
+                    // Invalid model, then update options menu to disable some items.
+                    mActivity.invalidateOptionsMenu();
+                }
             }
         }
     }
diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java
index a6efbb0..f17e175 100644
--- a/src/com/android/documentsui/files/FilesActivity.java
+++ b/src/com/android/documentsui/files/FilesActivity.java
@@ -398,6 +398,11 @@
         mInjector.focusManager.focusDocument(doc.documentId);
     }
 
+    @Override
+    protected boolean canInspectDirectory() {
+        return getCurrentDirectory() != null && mInjector.getModel().doc != null;
+    }
+
     @CallSuper
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
diff --git a/src/com/android/documentsui/files/MenuManager.java b/src/com/android/documentsui/files/MenuManager.java
index 49ca9a7..e2f39d5 100644
--- a/src/com/android/documentsui/files/MenuManager.java
+++ b/src/com/android/documentsui/files/MenuManager.java
@@ -270,9 +270,7 @@
     protected void updateInspect(MenuItem inspect) {
         boolean visible = mFeatures.isInspectorEnabled();
         inspect.setVisible(visible);
-        // use a null check w/ peek instead of isEmpty since
-        // DocumentStack accepts null values (not sure why).
-        inspect.setEnabled(visible && mState.stack.peek() != null);
+        inspect.setEnabled(visible && mDirDetails.canInspectDirectory());
     }
 
     @Override
diff --git a/tests/README b/tests/README
index 9fc4e04..7112376 100644
--- a/tests/README
+++ b/tests/README
@@ -2,6 +2,11 @@
 
 unit tests are under the 'unit/' dir, function under 'functional/'.
 
+Some of the test cases in functional/ check the file operation among the different storage media.
+Therefore, insert SD Card media to the test device when running this instrumentation test if the
+device has SD Card slot. If SD Card is not inserted or supported, the test creates virtual SD Card
+and uses it instead.
+
 To run just small tests"
 adb shell am instrument -w -e debug false -e log false -e timeout_msec 300000 -e size small com.android.documentsui.tests/android.support.test.runner.AndroidJUnitRunner
 
diff --git a/tests/common/com/android/documentsui/DocumentsProviderHelper.java b/tests/common/com/android/documentsui/DocumentsProviderHelper.java
index fc597ea..f0e6d12 100644
--- a/tests/common/com/android/documentsui/DocumentsProviderHelper.java
+++ b/tests/common/com/android/documentsui/DocumentsProviderHelper.java
@@ -336,4 +336,24 @@
     public void configure(String args, Bundle configuration) throws RemoteException {
         mClient.call("configure", args, configuration);
     }
+
+    public List<RootInfo> getRootList() throws RemoteException {
+        List<RootInfo> list = new ArrayList<>();
+        final Uri rootsUri = DocumentsContract.buildRootsUri(mAuthority);
+        Cursor cursor = null;
+        try {
+            cursor = mClient.query(rootsUri, null, null, null, null);
+            while (cursor.moveToNext()) {
+                RootInfo rootInfo = RootInfo.fromRootsCursor(mAuthority, cursor);
+                if (rootInfo != null) {
+                    list.add(rootInfo);
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Can't load rootInfo list", e);
+        } finally {
+            IoUtils.closeQuietly(cursor);
+        }
+        return list;
+    }
 }
diff --git a/tests/common/com/android/documentsui/bots/Bots.java b/tests/common/com/android/documentsui/bots/Bots.java
index 4bc3ed7..430309a 100644
--- a/tests/common/com/android/documentsui/bots/Bots.java
+++ b/tests/common/com/android/documentsui/bots/Bots.java
@@ -45,6 +45,7 @@
     public final MenuBot menu;
     public final UiBot main;
     public final InspectorBot inspector;
+    public final NotificationsBot notifications;
 
     public Bots(UiDevice device, UiAutomation automation, Context context, int timeout) {
         main = new UiBot(device, context, TIMEOUT);
@@ -57,6 +58,7 @@
         gesture = new GestureBot(device, automation, context, TIMEOUT);
         menu = new MenuBot(device, context, TIMEOUT);
         inspector = new InspectorBot(device, context, TIMEOUT);
+        notifications = new NotificationsBot(device, context, TIMEOUT);
     }
 
     /**
diff --git a/tests/common/com/android/documentsui/bots/NotificationsBot.java b/tests/common/com/android/documentsui/bots/NotificationsBot.java
new file mode 100644
index 0000000..500b630
--- /dev/null
+++ b/tests/common/com/android/documentsui/bots/NotificationsBot.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+package com.android.documentsui.bots;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiObjectNotFoundException;
+import android.support.test.uiautomator.UiSelector;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+
+/**
+ * A test helper class for controlling notification items.
+ */
+public class NotificationsBot extends Bots.BaseBot {
+    private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
+    private static final String allow_res_name = "allow";
+    private static final String turn_off_res_name = "notification_listener_disable_warning_confirm";
+
+    public NotificationsBot(UiDevice device, Context context, int timeout) {
+        super(device, context, timeout);
+    }
+
+    public void setNotificationAccess(Activity activity, boolean enabled)
+            throws UiObjectNotFoundException, NameNotFoundException {
+        Context testContext = InstrumentationRegistry.getContext();
+
+        if(isNotificationAccessEnabled(
+                mContext.getContentResolver(), testContext.getPackageName()) == enabled) {
+            return;
+        }
+
+        Intent intent = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
+        activity.startActivity(intent);
+        mDevice.waitForIdle();
+
+        String appName = testContext.getPackageManager().getApplicationLabel(
+                testContext.getApplicationInfo()).toString();
+        clickLabel(appName);
+
+        Context settings_context = mContext.createPackageContext(SETTINGS_PACKAGE_NAME,
+                Context.CONTEXT_RESTRICTED);
+        String label_res_name = enabled ? allow_res_name : turn_off_res_name;
+        int res_id = settings_context.getResources().getIdentifier(label_res_name,
+                "string", SETTINGS_PACKAGE_NAME);
+
+        clickLabel(settings_context.getResources().getString(res_id));
+        mDevice.pressKeyCode(KeyEvent.KEYCODE_BACK);
+        mDevice.waitForIdle();
+    }
+
+    private boolean isNotificationAccessEnabled(ContentResolver resolver, String pkgName) {
+        String listeners = Settings.Secure.getString(resolver, "enabled_notification_listeners");
+        if (!TextUtils.isEmpty(listeners)) {
+            String[] list = listeners.split(":");
+            for(String item : list) {
+                if(item.startsWith(pkgName)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private void clickLabel(String label) throws UiObjectNotFoundException {
+        UiSelector selector = new UiSelector().textMatches("(?i)" + label);
+        mDevice.findObject(selector).click();
+        mDevice.waitForIdle();
+    }
+}
diff --git a/tests/common/com/android/documentsui/services/TestNotificationService.java b/tests/common/com/android/documentsui/services/TestNotificationService.java
index d707af1..65af9a0 100644
--- a/tests/common/com/android/documentsui/services/TestNotificationService.java
+++ b/tests/common/com/android/documentsui/services/TestNotificationService.java
@@ -21,6 +21,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.BroadcastReceiver;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.StatusBarNotification;
 import android.view.View;
@@ -28,7 +29,7 @@
 import android.widget.FrameLayout;
 import android.widget.ProgressBar;
 import android.widget.RemoteViews;
-
+import android.util.Log;
 
 /**
 * This class receives a callback when Notification is posted or removed
@@ -36,6 +37,8 @@
 * And, this sends the operation's result by Broadcast.
 */
 public class TestNotificationService extends NotificationListenerService {
+    private static final String TAG = "TestNotificationService";
+
     public static final String ACTION_CHANGE_CANCEL_MODE =
             "com.android.documentsui.services.TestNotificationService.ACTION_CHANGE_CANCEL_MODE";
 
@@ -45,27 +48,31 @@
     public static final String ACTION_OPERATION_RESULT =
             "com.android.documentsui.services.TestNotificationService.ACTION_OPERATION_RESULT";
 
+    public static final String ANDROID_PACKAGENAME = "android";
+
+    public static final String CANCEL_RES_NAME = "cancel";
+
     public static final String EXTRA_RESULT =
             "com.android.documentsui.services.TestNotificationService.EXTRA_RESULT";
 
     public static final String EXTRA_ERROR_REASON =
             "com.android.documentsui.services.TestNotificationService.EXTRA_ERROR_REASON";
 
+    private final static String DOCUMENTSUI_PACKAGE= "com.android.documentsui";
+
     public enum MODE {
         CANCEL_MODE,
         EXECUTION_MODE;
     }
 
-    private String DOCUMENTSUI= "com.android.documentsui";
+    private MODE mCurrentMode = MODE.CANCEL_MODE;
+
+    private boolean mCancelled = false;
 
     private FrameLayout mFrameLayout = null;
 
     private ProgressBar mProgressBar = null;
 
-    private MODE mCurrentMode = MODE.CANCEL_MODE;
-
-    private boolean mCancelled = false;
-
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -103,19 +110,21 @@
     @Override
     public void onNotificationPosted(StatusBarNotification sbn) {
         String pkgName = sbn.getPackageName();
-        if (!pkgName.equals(DOCUMENTSUI)) {
-            return;
-        }
-
-        if (MODE.CANCEL_MODE.equals(mCurrentMode)) {
-            mCancelled = doCancel(sbn.getNotification());
+        if (DOCUMENTSUI_PACKAGE.equals(pkgName)) {
+            if (MODE.CANCEL_MODE.equals(mCurrentMode)) {
+                try {
+                    mCancelled = doCancel(sbn.getNotification());
+                } catch (Exception e) {
+                    Log.d(TAG, "Error occurs when cancel notification.", e);
+                }
+            }
         }
     }
 
     @Override
     public void onNotificationRemoved(StatusBarNotification sbn) {
         String pkgName = sbn.getPackageName();
-        if (!pkgName.equals(DOCUMENTSUI)) {
+        if (!DOCUMENTSUI_PACKAGE.equals(pkgName)) {
             return;
         }
 
@@ -135,7 +144,8 @@
         sendBroadcast(intent);
     }
 
-    private boolean doCancel(Notification noti) {
+    private boolean doCancel(Notification noti)
+            throws NameNotFoundException, PendingIntent.CanceledException {
         if (!isStartProgress(noti)) {
             return false;
         }
@@ -147,12 +157,15 @@
 
         boolean result = false;
         for (Notification.Action item : aList) {
-            if (item.title.equals("Cancel")) {
-                try {
-                    item.actionIntent.send();
-                    result = true;
-                } catch (PendingIntent.CanceledException e) {
-                }
+            Context android_context = getBaseContext().createPackageContext(ANDROID_PACKAGENAME,
+                    Context.CONTEXT_RESTRICTED);
+            int res_id = android_context.getResources().getIdentifier(CANCEL_RES_NAME,
+                    "string", ANDROID_PACKAGENAME);
+            final String cancel_label = android_context.getResources().getString(res_id);
+
+            if (cancel_label.equals(item.title)) {
+                item.actionIntent.send();
+                result = true;
             }
         }
         return result;
@@ -208,4 +221,3 @@
         return result;
     }
 }
-
diff --git a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
index a1b29cd..2841677 100644
--- a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
+++ b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
@@ -28,6 +28,7 @@
     public boolean hasItemsToPaste;
     public boolean canCreateDoc;
     public boolean canCreateDirectory;
+    public boolean canInspectDirectory;
 
     public TestDirectoryDetails() {
         super(null);
@@ -57,4 +58,9 @@
     public boolean canCreateDirectory() {
         return canCreateDirectory;
     }
+
+    @Override
+    public boolean canInspectDirectory() {
+        return canInspectDirectory;
+    }
 }
\ No newline at end of file
diff --git a/tests/functional/com/android/documentsui/CancelFromNotificationUiTest.java b/tests/functional/com/android/documentsui/CancelFromNotificationUiTest.java
index 7a39c98..3351308 100644
--- a/tests/functional/com/android/documentsui/CancelFromNotificationUiTest.java
+++ b/tests/functional/com/android/documentsui/CancelFromNotificationUiTest.java
@@ -20,29 +20,18 @@
 import static com.android.documentsui.StubProvider.ROOT_0_ID;
 import static com.android.documentsui.StubProvider.ROOT_1_ID;
 
-import static android.provider.DocumentsContract.buildDocumentUri;
-import android.provider.DocumentsContract;
-import com.android.documentsui.archives.ResourcesProvider;
-
-import android.content.ComponentName;
+import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.ContentResolver;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.BroadcastReceiver;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.provider.Settings;
 import android.support.test.filters.LargeTest;
-import android.support.test.filters.Suppress;
-import android.text.TextUtils;
-import android.view.KeyEvent;
 import android.util.Log;
 
 import com.android.documentsui.files.FilesActivity;
 import com.android.documentsui.services.TestNotificationService;
-import com.android.documentsui.R;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -54,21 +43,13 @@
 */
 @LargeTest
 public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
-    private static final String PACKAGE_NAME = "com.android.documentsui.tests";
+    private static final String TAG = "CancelFromNotificationUiTest";
 
     private static final String TARGET_FILE = "dummy.data";
 
     private static final int BUFFER_SIZE = 10 * 1024 * 1024;
 
-    private static final String ACCESS_APP_NAME = "DocumentsUI Tests";
-
-    private static final String ALLOW = "ALLOW";
-
-    private static final String TURN_OFF = "TURN OFF";
-
-    private static final String COPY = "Copy to…";
-
-    private static final String MOVE = "Move to…";
+    private static final int WAIT_TIME_SECONDS = 60;
 
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
@@ -106,6 +87,12 @@
         bundle.putLong(EXTRA_SIZE, 500L);
         mDocsHelper.configure(null, bundle);
 
+        try {
+            bots.notifications.setNotificationAccess(getActivity(), true);
+        } catch (Exception e) {
+            Log.d(TAG, "Cannot set notification access. ", e);
+        }
+
         initTestFiles();
 
         IntentFilter filter = new IntentFilter();
@@ -126,11 +113,9 @@
 
         context.unregisterReceiver(mReceiver);
         try {
-            if (isEnableAccessNotification()) {
-                disallowNotificationAccess();
-            }
+            bots.notifications.setNotificationAccess(getActivity(), false);
         } catch (Exception e) {
-            // ignore
+            Log.d(TAG, "Cannot set notification access. ", e);
         }
         super.tearDown();
     }
@@ -138,9 +123,6 @@
     @Override
     public void initTestFiles() throws RemoteException {
         try {
-            if (!isEnableAccessNotification()) {
-               allowNotificationAccess();
-            }
             createDummyFile();
         } catch (Exception e) {
             fail("Initialization failed. " + e.toString());
@@ -158,57 +140,16 @@
         }
     }
 
-    private void allowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ALLOW).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private void disallowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(TURN_OFF).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private boolean isEnableAccessNotification() {
-        ContentResolver resolver = getActivity().getContentResolver();
-        String listeners = Settings.Secure.getString(resolver,"enabled_notification_listeners");
-
-        if (!TextUtils.isEmpty(listeners)) {
-            String[] list = listeners.split(":");
-            for(String item : list) {
-                if(item.startsWith(PACKAGE_NAME)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     public void testCopyDocument_Cancel() throws Exception {
         bots.roots.openRoot(ROOT_0_ID);
 
         bots.directory.findDocument(TARGET_FILE);
         device.waitForIdle();
 
-        bots.directory.selectDocument(TARGET_FILE);
+        bots.directory.selectDocument(TARGET_FILE, 1);
         device.waitForIdle();
 
-        bots.main.clickToolbarOverflowItem(COPY);
+        bots.main.clickToolbarOverflowItem(context.getResources().getString(R.string.menu_copy));
         device.waitForIdle();
 
         bots.main.clickDialogCancelButton();
@@ -222,10 +163,10 @@
         bots.directory.findDocument(TARGET_FILE);
         device.waitForIdle();
 
-        bots.directory.selectDocument(TARGET_FILE);
+        bots.directory.selectDocument(TARGET_FILE, 1);
         device.waitForIdle();
 
-        bots.main.clickToolbarOverflowItem(COPY);
+        bots.main.clickToolbarOverflowItem(context.getResources().getString(R.string.menu_copy));
         device.waitForIdle();
 
         bots.roots.openRoot(ROOT_1_ID);
@@ -233,7 +174,7 @@
         device.waitForIdle();
 
         try {
-            mCountDownLatch.await(60, TimeUnit.SECONDS);
+            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
         } catch (Exception e) {
             fail("Cannot wait because of error." + e.toString());
         }
@@ -255,10 +196,10 @@
         bots.directory.findDocument(TARGET_FILE);
         device.waitForIdle();
 
-        bots.directory.selectDocument(TARGET_FILE);
+        bots.directory.selectDocument(TARGET_FILE, 1);
         device.waitForIdle();
 
-        bots.main.clickToolbarOverflowItem(MOVE);
+        bots.main.clickToolbarOverflowItem(context.getResources().getString(R.string.menu_move));
         device.waitForIdle();
 
         bots.main.clickDialogCancelButton();
@@ -272,10 +213,10 @@
         bots.directory.findDocument(TARGET_FILE);
         device.waitForIdle();
 
-        bots.directory.selectDocument(TARGET_FILE);
+        bots.directory.selectDocument(TARGET_FILE, 1);
         device.waitForIdle();
 
-        bots.main.clickToolbarOverflowItem(MOVE);
+        bots.main.clickToolbarOverflowItem(context.getResources().getString(R.string.menu_move));
         device.waitForIdle();
 
         bots.roots.openRoot(ROOT_1_ID);
@@ -283,7 +224,7 @@
         device.waitForIdle();
 
         try {
-            mCountDownLatch.await(60, TimeUnit.SECONDS);
+            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
         } catch (Exception e) {
             fail("Cannot wait because of error." + e.toString());
         }
diff --git a/tests/functional/com/android/documentsui/FileCopyUiTest.java b/tests/functional/com/android/documentsui/FileCopyUiTest.java
index 468e460..c0cd84f 100644
--- a/tests/functional/com/android/documentsui/FileCopyUiTest.java
+++ b/tests/functional/com/android/documentsui/FileCopyUiTest.java
@@ -16,60 +16,54 @@
 
 package com.android.documentsui;
 
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
+import static com.android.documentsui.base.Providers.AUTHORITY_STORAGE;
+import static com.android.documentsui.base.Providers.ROOT_ID_DEVICE;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.ContentResolver;
+import android.content.ContentProviderClient;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.BroadcastReceiver;
+import android.content.res.Resources;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
+import android.os.SystemClock;
 import android.provider.Settings;
 import android.support.test.filters.LargeTest;
-import android.support.test.filters.Suppress;
-import android.support.test.uiautomator.Configurator;
 import android.text.TextUtils;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
+import android.util.Log;
 
 import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
 import com.android.documentsui.files.FilesActivity;
 import com.android.documentsui.services.TestNotificationService;
 
-import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
+import java.util.HashMap;
 import java.util.List;
-import java.util.ArrayList;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 /**
 * This class test the below points
-* - Copy large number of files
+* - Copy large number of files on the internal/external storage
 */
 @LargeTest
 public class FileCopyUiTest extends ActivityTest<FilesActivity> {
-    private static final String PACKAGE_NAME = "com.android.documentsui.tests";
+    private static final String TAG = "FileCopyUiTest";
 
-    private static final String ACCESS_APP_NAME = "DocumentsUI Tests";
+    private static final String TARGET_FOLDER = "test_folder";
 
-    private static final String ALLOW = "ALLOW";
+    private static final int TARGET_COUNT = 1000;
 
-    private static final String TURN_OFF = "TURN OFF";
+    private static final int WAIT_TIME_SECONDS = 180;
 
-    private static final String COPY = "Copy to…";
-
-    private static final String MOVE = "Move to…";
-
-    private static final String SELECT_ALL = "Select all";
-
-    private static final int DUMMY_FILE_COUNT = 1000;
-
-    private final List<String> mCopyFileList = new ArrayList<String>();
+    private final Map<String, Long> mTargetFileList = new HashMap<String, Long>();
 
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
@@ -93,6 +87,18 @@
 
     private String mErrorReason;
 
+    private DocumentsProviderHelper mStorageDocsHelper;
+
+    private RootInfo mPrimaryRoot;
+
+    private RootInfo mSdCardRoot;
+
+    private String mSdCardLabel;
+
+    private boolean mIsVirtualSdCard;
+
+    private int mPreTestStayAwakeValue;
+
     public FileCopyUiTest() {
         super(FilesActivity.class);
     }
@@ -101,12 +107,33 @@
     public void setUp() throws Exception {
         super.setUp();
 
+        // Create ContentProviderClient and DocumentsProviderHelper for using SD Card.
+        ContentProviderClient storageClient =
+                mResolver.acquireUnstableContentProviderClient(AUTHORITY_STORAGE);
+        mStorageDocsHelper = new DocumentsProviderHelper(AUTHORITY_STORAGE, storageClient);
+
         // Set a flag to prevent many refreshes.
         Bundle bundle = new Bundle();
         bundle.putBoolean(StubProvider.EXTRA_ENABLE_ROOT_NOTIFICATION, false);
         mDocsHelper.configure(null, bundle);
 
-        initTestFiles();
+        // Set "Stay awake" until test is finished.
+        mPreTestStayAwakeValue = Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
+        device.executeShellCommand("settings put global stay_on_while_plugged_in 3");
+
+        // If Internal Storage is not shown, turn on.
+        State state = ((FilesActivity) getActivity()).getDisplayState();
+        if (!state.showAdvanced) {
+            bots.main.clickToolbarOverflowItem(
+                    context.getResources().getString(R.string.menu_advanced_show));
+        }
+
+        try {
+            bots.notifications.setNotificationAccess(getActivity(), true);
+        } catch (Exception e) {
+            Log.d(TAG, "Cannot set notification access. ", e);
+        }
 
         IntentFilter filter = new IntentFilter();
         filter.addAction(TestNotificationService.ACTION_OPERATION_RESULT);
@@ -116,134 +143,269 @@
 
         mOperationExecuted = false;
         mErrorReason = "No response from Notification";
-        mCountDownLatch = new CountDownLatch(1);
+
+        initStorageRootInfo();
+        assertNotNull("Internal Storage not found", mPrimaryRoot);
+
+        // If SD Card is not found, enable Virtual SD Card
+        if (mSdCardRoot == null) {
+            mIsVirtualSdCard = enableVirtualSdCard();
+            assertTrue("Cannot set virtual SD Card", mIsVirtualSdCard);
+            // Call initStorageRootInfo() again for setting SD Card root
+            initStorageRootInfo();
+        }
     }
 
     @Override
     public void tearDown() throws Exception {
-        mCountDownLatch.countDown();
-        mCountDownLatch = null;
+        // Delete created files
+        deleteDocuments(Build.MODEL);
+        deleteDocuments(mSdCardLabel);
+
+        if (mIsVirtualSdCard) {
+            device.executeShellCommand("sm set-virtual-disk false");
+        }
+
+        device.executeShellCommand("settings put global stay_on_while_plugged_in "
+                + mPreTestStayAwakeValue);
 
         context.unregisterReceiver(mReceiver);
         try {
-            if (isEnableAccessNotification()) {
-                disallowNotificationAccess();
-            }
+            bots.notifications.setNotificationAccess(getActivity(), false);
         } catch (Exception e) {
-            // ignore
+            Log.d(TAG, "Cannot set notification access. ", e);
         }
+
         super.tearDown();
     }
 
-    @Override
-    public void initTestFiles() throws RemoteException {
-        try {
-            if (!isEnableAccessNotification()) {
-                allowNotificationAccess();
-            }
-            createDummyFiles();
-        } catch (Exception e) {
-            fail("Initialization failed");
+    private boolean createDocuments(String label, RootInfo root,
+            DocumentsProviderHelper helper) throws Exception {
+        if (TextUtils.isEmpty(label) || root == null) {
+            return false;
         }
-    }
 
-    private void createDummyFiles() throws Exception {
-        final ThreadPoolExecutor exec = new ThreadPoolExecutor(
-                5, 5, 1000L, TimeUnit.MILLISECONDS,
-                        new ArrayBlockingQueue<Runnable>(100, true));
-        for (int i = 0; i < DUMMY_FILE_COUNT; i++) {
-            final String fileName = "file" + String.format("%04d", i) + ".log";
-            if (exec.getQueue().size() >= 80) {
-                Thread.sleep(50);
-            }
-            exec.submit(new Runnable() {
-                @Override
-                public void run() {
-                    Uri uri = mDocsHelper.createDocument(rootDir0, "text/plain", fileName);
-                    try {
-                        mDocsHelper.writeDocument(uri, new byte[1]);
-                    } catch (Exception e) {
-                        // ignore
-                    }
-                }
-            });
-            mCopyFileList.add(fileName);
+        // If Test folder is already created, delete it
+        if (bots.directory.hasDocuments(TARGET_FOLDER)) {
+            deleteDocuments(label);
         }
-        exec.shutdown();
-    }
 
-    private void allowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
+        // Create folder and create file in its folder
+        bots.roots.openRoot(label);
+        Uri uri = helper.createFolder(root, TARGET_FOLDER);
         device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ALLOW).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private void disallowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(TURN_OFF).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private boolean isEnableAccessNotification() {
-        ContentResolver resolver = getActivity().getContentResolver();
-        String listeners = Settings.Secure.getString(
-                resolver,"enabled_notification_listeners");
-        if (!TextUtils.isEmpty(listeners)) {
-            String[] list = listeners.split(":");
-            for(String item : list) {
-                if(item.startsWith(PACKAGE_NAME)) {
-                    return true;
-                }
-            }
+        if (!bots.directory.hasDocuments(TARGET_FOLDER)) {
+            return false;
         }
-        return false;
+
+        loadImages(uri, helper);
+
+        // Check that image files are loaded completely
+        DocumentInfo parent = helper.findDocument(root.documentId, TARGET_FOLDER);
+        List<DocumentInfo> children = helper.listChildren(parent.documentId, TARGET_COUNT);
+        for (DocumentInfo docInfo : children) {
+            mTargetFileList.put(docInfo.displayName, docInfo.size);
+        }
+        assertTrue("Lack of loading file. File count = " + mTargetFileList.size(),
+                mTargetFileList.size() == TARGET_COUNT);
+
+        return true;
     }
 
-    public void testCopyAllDocument() throws Exception {
-        bots.roots.openRoot(ROOT_0_ID);
-        bots.main.clickToolbarOverflowItem(SELECT_ALL);
+    private boolean deleteDocuments(String label) throws Exception {
+        if (TextUtils.isEmpty(label)) {
+            return false;
+        }
+
+        bots.roots.openRoot(label);
+        if (!bots.directory.hasDocuments(TARGET_FOLDER)) {
+            return true;
+        }
+
+        bots.directory.selectDocument(TARGET_FOLDER, 1);
         device.waitForIdle();
 
-        bots.main.clickToolbarOverflowItem(COPY);
-        device.waitForIdle();
-
-        bots.roots.openRoot(ROOT_1_ID);
+        bots.main.clickToolbarItem(R.id.action_menu_delete);
         bots.main.clickDialogOkButton();
         device.waitForIdle();
 
+        bots.directory.findDocument(TARGET_FOLDER).waitUntilGone(WAIT_TIME_SECONDS);
+        return !bots.directory.hasDocuments(TARGET_FOLDER);
+    }
+
+    private void loadImages(Uri root, DocumentsProviderHelper helper) throws Exception {
+        Context testContext = getInstrumentation().getContext();
+        Resources res = testContext.getResources();
         try {
-            mCountDownLatch.await(60, TimeUnit.SECONDS);
+            int resId = res.getIdentifier(
+                    "uitest_images", "raw", testContext.getPackageName());
+            loadImageFromResources(root, helper, resId, res);
+        } catch (Exception e) {
+            Log.d(TAG, "Error occurs when loading image. ", e);
+        }
+    }
+
+    private void loadImageFromResources(Uri root, DocumentsProviderHelper helper, int resId,
+            Resources res) throws Exception {
+        ZipInputStream in = null;
+        int read = 0;
+        int count = 0;
+        try {
+            in = new ZipInputStream(res.openRawResource(resId));
+            ZipEntry zipEntry = null;
+            while ((zipEntry = in.getNextEntry()) != null && (count++ < TARGET_COUNT)) {
+                String fileName = zipEntry.getName();
+                Uri uri = helper.createDocument(root, "image/png", fileName);
+                byte[] buff = new byte[1024];
+                while ((read = in.read(buff)) > 0) {
+                    helper.writeAppendDocument(uri, buff);
+                }
+                in.closeEntry();
+                buff = null;
+            }
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                    in  = null;
+                } catch (Exception e) {
+                    Log.d(TAG, "Error occurs when close ZipInputStream. ", e);
+                }
+            }
+        }
+    }
+
+    /** @return true if virtual SD Card setting is completed. Othrewise false */
+    private boolean enableVirtualSdCard() throws Exception {
+        boolean result = false;
+        try {
+            device.executeShellCommand("sm set-virtual-disk true");
+            String diskId = getAdoptionDisk();
+            assertNotNull("Failed to setup virtual disk.", diskId);
+            device.executeShellCommand(String.format("sm partition %s public", diskId));
+            result = waitForPublicVolume();
+        } catch (Exception e) {
+            result = false;
+        }
+        return result;
+    }
+
+    private String getAdoptionDisk() throws Exception {
+        int attempt = 0;
+        String disks = device.executeShellCommand("sm list-disks adoptable");
+        while ((disks == null || disks.isEmpty()) && attempt++ < 15) {
+            SystemClock.sleep(1000);
+            disks = device.executeShellCommand("sm list-disks adoptable");
+        }
+
+        if (disks == null || disks.isEmpty()) {
+            return null;
+        }
+        return disks.split("\n")[0].trim();
+    }
+
+    private boolean waitForPublicVolume() throws Exception {
+        int attempt = 0;
+        String volumes = device.executeShellCommand("sm list-volumes public");
+        while ((volumes == null || volumes.isEmpty() || !volumes.contains("mounted"))
+                && attempt++ < 15) {
+            SystemClock.sleep(1000);
+            volumes = device.executeShellCommand("sm list-volumes public");
+        }
+
+        if (volumes == null || volumes.isEmpty()) {
+            return false;
+        }
+        return true;
+    }
+
+    private void initStorageRootInfo() throws RemoteException {
+        List<RootInfo> rootList = mStorageDocsHelper.getRootList();
+        for (RootInfo info : rootList) {
+             if (ROOT_ID_DEVICE.equals(info.rootId)) {
+                 mPrimaryRoot = info;
+             } else if (info.isSd()) {
+                 mSdCardRoot = info;
+                 mSdCardLabel = info.title;
+             }
+        }
+    }
+
+    private void copyFiles(String sourceRoot, String targetRoot) throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+        // Copy folder and child files
+        bots.roots.openRoot(sourceRoot);
+        bots.directory.selectDocument(TARGET_FOLDER, 1);
+        device.waitForIdle();
+        bots.main.clickToolbarOverflowItem(context.getResources().getString(R.string.menu_copy));
+        device.waitForIdle();
+        bots.roots.openRoot(targetRoot);
+        bots.main.clickDialogOkButton();
+        device.waitForIdle();
+
+        // Wait until copy operation finished
+        try {
+            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
         } catch (Exception e) {
             fail("Cannot wait because of error." + e.toString());
         }
 
         assertTrue(mErrorReason, mOperationExecuted);
+    }
 
-        bots.roots.openRoot(ROOT_1_ID);
+    private void assertFilesCopied(String rootLabel, RootInfo rootInfo,
+            DocumentsProviderHelper helper) throws Exception {
+        // Check that copied folder exists
+        bots.roots.openRoot(rootLabel);
         device.waitForIdle();
+        bots.directory.assertDocumentsPresent(TARGET_FOLDER);
 
-        List<DocumentInfo> root1 = mDocsHelper.listChildren(rootDir1.documentId, 1000);
-        List<String> copiedFileList = new ArrayList<String>();
-        for (DocumentInfo info : root1) {
-            copiedFileList.add(info.displayName);
+        // Check that copied files exist
+        DocumentInfo parent = helper.findDocument(rootInfo.documentId, TARGET_FOLDER);
+        List<DocumentInfo> children = helper.listChildren(parent.documentId, TARGET_COUNT);
+        for (DocumentInfo info : children) {
+            Long size = mTargetFileList.get(info.displayName);
+            assertNotNull("Cannot find file.", size);
+            assertTrue("Copied file contents differ.", info.size == size);
         }
+    }
 
-        for (String name : mCopyFileList) {
-            assertTrue("Not found " + name, copiedFileList.contains(name));
-        }
+    // Copy Internal Storage -> Internal Storage //
+    public void testCopyDocuments_InternalStorage() throws Exception {
+        createDocuments(StubProvider.ROOT_0_ID, rootDir0, mDocsHelper);
+        copyFiles(StubProvider.ROOT_0_ID, StubProvider.ROOT_1_ID);
+
+        // Check that original folder exists
+        bots.roots.openRoot(StubProvider.ROOT_0_ID);
+        bots.directory.assertDocumentsPresent(TARGET_FOLDER);
+
+        // Check that copied files exist
+        assertFilesCopied(StubProvider.ROOT_1_ID, rootDir1, mDocsHelper);
+    }
+
+    // Copy SD Card -> Internal Storage //
+    public void testCopyDocuments_FromSdCard() throws Exception {
+        createDocuments(mSdCardLabel, mSdCardRoot, mStorageDocsHelper);
+        copyFiles(mSdCardLabel, Build.MODEL);
+
+        // Check that original folder exists
+        bots.roots.openRoot(mSdCardLabel);
+        bots.directory.assertDocumentsPresent(TARGET_FOLDER);
+
+        // Check that copied files exist
+        assertFilesCopied(Build.MODEL, mPrimaryRoot, mStorageDocsHelper);
+    }
+
+    // Copy Internal Storage -> SD Card //
+    public void testCopyDocuments_ToSdCard() throws Exception {
+        createDocuments(Build.MODEL, mPrimaryRoot, mStorageDocsHelper);
+        copyFiles(Build.MODEL, mSdCardLabel);
+
+        // Check that original folder exists
+        bots.roots.openRoot(Build.MODEL);
+        bots.directory.assertDocumentsPresent(TARGET_FOLDER);
+
+        // Check that copied files exist
+        assertFilesCopied(mSdCardLabel, mSdCardRoot, mStorageDocsHelper);
     }
 }
diff --git a/tests/functional/com/android/documentsui/FileDeleteUiTest.java b/tests/functional/com/android/documentsui/FileDeleteUiTest.java
index 0caa0c4..fbeaf34 100644
--- a/tests/functional/com/android/documentsui/FileDeleteUiTest.java
+++ b/tests/functional/com/android/documentsui/FileDeleteUiTest.java
@@ -17,23 +17,16 @@
 package com.android.documentsui;
 
 import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.ContentResolver;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.BroadcastReceiver;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.provider.Settings;
 import android.support.test.filters.LargeTest;
-import android.support.test.filters.Suppress;
-import android.support.test.uiautomator.Configurator;
-import android.text.TextUtils;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
+import android.util.Log;
 
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.files.FilesActivity;
@@ -41,7 +34,6 @@
 
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.List;
@@ -53,22 +45,12 @@
 */
 @LargeTest
 public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
-    private static final String PACKAGE_NAME = "com.android.documentsui.tests";
-
-    private static final String ACCESS_APP_NAME = "DocumentsUI Tests";
-
-    private static final String ALLOW = "ALLOW";
-
-    private static final String TURN_OFF = "TURN OFF";
-
-    private static final String COPY = "Copy to…";
-
-    private static final String MOVE = "Move to…";
-
-    private static final String SELECT_ALL = "Select all";
+    private static final String TAG = "FileDeleteUiTest";
 
     private static final int DUMMY_FILE_COUNT = 1000;
 
+    private static final int WAIT_TIME_SECONDS = 60;
+
     private final List<String> mCopyFileList = new ArrayList<String>();
 
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -106,6 +88,12 @@
         bundle.putBoolean(StubProvider.EXTRA_ENABLE_ROOT_NOTIFICATION, false);
         mDocsHelper.configure(null, bundle);
 
+        try {
+            bots.notifications.setNotificationAccess(getActivity(), true);
+        } catch (Exception e) {
+            Log.d(TAG, "Cannot set notification access. ", e);
+        }
+
         initTestFiles();
 
         IntentFilter filter = new IntentFilter();
@@ -126,11 +114,9 @@
 
         context.unregisterReceiver(mReceiver);
         try {
-            if (isEnableAccessNotification()) {
-                disallowNotificationAccess();
-            }
+            bots.notifications.setNotificationAccess(getActivity(), false);
         } catch (Exception e) {
-            // ignore
+            Log.d(TAG, "Cannot set notification access. ", e);
         }
         super.tearDown();
     }
@@ -138,9 +124,6 @@
     @Override
     public void initTestFiles() throws RemoteException {
         try {
-            if (!isEnableAccessNotification()) {
-                allowNotificationAccess();
-            }
             createDummyFiles();
         } catch (Exception e) {
             fail("Initialization failed");
@@ -172,50 +155,10 @@
         exec.shutdown();
     }
 
-    private void allowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ALLOW).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private void disallowNotificationAccess() throws Exception {
-        Intent intent = new Intent();
-        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
-        getActivity().startActivity(intent);
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
-        device.waitForIdle();
-
-        bots.main.findMenuLabelWithName(TURN_OFF).click();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
-    }
-
-    private boolean isEnableAccessNotification() {
-        ContentResolver resolver = getActivity().getContentResolver();
-        String listeners = Settings.Secure.getString(
-                resolver,"enabled_notification_listeners");
-        if (!TextUtils.isEmpty(listeners)) {
-            String[] list = listeners.split(":");
-            for(String item : list) {
-                if(item.startsWith(PACKAGE_NAME)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     public void testDeleteAllDocument() throws Exception {
         bots.roots.openRoot(ROOT_0_ID);
-        bots.main.clickToolbarOverflowItem(SELECT_ALL);
+        bots.main.clickToolbarOverflowItem(
+                context.getResources().getString(R.string.menu_select_all));
         device.waitForIdle();
 
         bots.main.clickToolbarItem(R.id.action_menu_delete);
@@ -223,7 +166,7 @@
         device.waitForIdle();
 
         try {
-            mCountDownLatch.await(60, TimeUnit.SECONDS);
+            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
         } catch (Exception e) {
             fail("Cannot wait because of error." + e.toString());
         }
diff --git a/tests/res/raw/uitest_images.zip b/tests/res/raw/uitest_images.zip
new file mode 100644
index 0000000..33186e4
--- /dev/null
+++ b/tests/res/raw/uitest_images.zip
Binary files differ
diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
index 9e638ad..c30d572 100644
--- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
@@ -420,46 +420,22 @@
     @Test
     public void testOptionMenu_Inspector_VisibleAndEnabled() {
         features.inspector = true;
+        dirDetails.canInspectDirectory = true;
         mgr.updateOptionMenu(testMenu);
         optionInspector.assertVisible();
         optionInspector.assertEnabled();
     }
 
     @Test
-    public void testOptionMenu_Inspector_DisabledInRecentsFolder() {
+    public void testOptionMenu_Inspector_VisibleButDisabled() {
         features.inspector = true;
-
-        // synthesize a fake recents root. Not setting an authority or id == recents.
-        RootInfo recents = new RootInfo();
-        assert recents.isRecents();
-        state.stack.changeRoot(recents);
+        dirDetails.canInspectDirectory = false;
         mgr.updateOptionMenu(testMenu);
         optionInspector.assertVisible();
         optionInspector.assertDisabled();
     }
 
     @Test
-    public void testOptionMenu_Inspector_DisabledForEmptyStack() {
-        features.inspector = true;
-        state.stack.reset();  // unset cwd
-        mgr.updateOptionMenu(testMenu);
-
-        optionInspector.assertVisible();
-        optionInspector.assertDisabled();
-    }
-
-    @Test
-    public void testOptionMenu_Inspector_DisabledForNullDirectory() {
-        features.inspector = true;
-        state.stack.reset();
-        state.stack.push(null);
-        mgr.updateOptionMenu(testMenu);
-
-        optionInspector.assertVisible();
-        optionInspector.assertDisabled();
-    }
-
-    @Test
     public void testInflateContextMenu_Files() {
         TestMenuInflater inflater = new TestMenuInflater();
 
@@ -633,6 +609,8 @@
 
     @Test
     public void testContextMenu_CanInspectContainer() {
+        features.inspector = true;
+        dirDetails.canInspectDirectory = true;
         mgr.updateContextMenuForContainer(testMenu);
         dirInspect.assertVisible();
         dirInspect.assertEnabled();