1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.documentsui.files; 18 19 import com.android.documentsui.ActivityConfig; 20 import com.android.documentsui.base.DocumentStack; 21 import com.android.documentsui.base.RootInfo; 22 import com.android.documentsui.util.VersionUtils; 23 24 /** 25 * Provides support for Files activity specific specializations. 26 */ 27 public final class Config extends ActivityConfig { 28 29 @Override managedModeEnabled(DocumentStack stack)30 public boolean managedModeEnabled(DocumentStack stack) { 31 // This method helps us understand when to kick in special manage mode behaviors. 32 final RootInfo root = stack.getRoot(); 33 34 // When in Files activity, allow External Storage provider to view 35 // Android/[data|obb|sandbox] directories which are otherwise hidden for privacy reasons. 36 if (VersionUtils.isAtLeastR() && root != null && root.isExternalStorage()) { 37 return true; 38 } 39 // When in downloads top level directory, we also show active downloads. 40 // And while we don't allow folders in Downloads, we do allow Zip files in 41 // downloads that themselves can be opened and viewed like directories. 42 return root != null 43 && root.isDownloads() 44 && stack.size() == 1; 45 } 46 47 @Override dragAndDropEnabled()48 public boolean dragAndDropEnabled() { 49 return true; 50 } 51 } 52