0

우리 앱에서는 다른 파일 저장 앱에서 파일을 가져 오려고합니다. 예를 들어, 앱을 열고 앱 선택기를 시작하고 드롭 박스를 선택하고 파일을 선택하고 Google 앱에서 파일을 엽니 다.queryIntentActivities()를 사용하여 Google 드라이브를 표시하려면 어떻게해야하나요?

는 내가 다른 애플 리케이션을 시도하고 호출이 의도를 설정 한 : 우리는 이것이 우리의 사용자가 선택할 수있는 애플 리케이션을 표시하기 위해 반환 응용 프로그램의 목록을

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("*/*"); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

PackageManager packageManager = getPackageManager(); 
List activities = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 

중요한 부분은 queryIntentActivities이다 사용하고 있습니다. dropbox 및 Microsoft OneDrive와 같은 앱은 문제가 없지만 Google 드라이브는 절대로 표시되지 않습니다.

queryIntentActivities과 함께 Google 드라이브를 반환 받으려면 어떻게해야합니까?

답변

1

Android KitKat (API 19) 이상의 기기에서 앱은 Storage Access Framework을 사용하고 DocumentsProvider을 만들 수 있습니다. 이 경우 ACTION_GET_CONTENT 인 텐트가있는 startActivity()을 호출하면 시스템 UI가 UI를 제공합니다. 앱은 자체 UI를 구현하지 않아도되고 GET_CONTENT을 직접 처리하는 액티비티가 필요하지 않습니다.

시스템 UI 만 GET_CONTENT 활동을 제공하는 스토리지 액세스 프레임 워크 및 레거시 응용 프로그램을 사용하여 두 애플리케이션에 대한 액세스를 제공으로

, 당신은 하지은 자신의 응용 프로그램 선택기를해야하고 대신 직접 ACTION_GET_CONTENT 의도 실행하고거야 모든 앱에서 작동하며 사용자가 플래그가 설정된 경우 하나의 앱에서만 복수가 아닌 DocumentsProvider 개의 파일을 선택할 수 있습니다.

+0

스토리지 액세스 프레임 워크를 살펴본 결과, 우리가하는 일과 잘 어울리는 것 같지만 API 14+ 이상을 지원한다는 점을 명확히해야하며 문서에 대한 단기 액세스 권한 만 있으면됩니다. 'ACTION_GET_CONENT'가 여전히 14+ 이상으로 사용해야하는 것 같습니다. 그렇다면 Google 드라이브는 'ACTION_GET_CONTENT'을 (를) 지원합니까? 내가 본 모든 대답은 부정이라고하지만 그들은 몇 살입니다. –

+0

예, 파일에 대한 임시 액세스 만하려는 경우에는 확실히 'ACTION_GET_CONTENT'를 사용해야합니다. 당신은 너무 많은 일을하고 있습니다. -'ACTION_GET_CONTENT'는 사용자가 어떤 DocumentProvider에서든지'GET_CONTENT' **와 **를 필터링하는 Activity가있는 앱을 선택할 수있는 UI를 가져옵니다. 당신이 만든'Intent '를 실행하면 모든 것을 볼 수 있습니다. 필요한 권한으로 인해 해당 시스템 UI 만 'DocumentsProviders'에서 읽을 수 있으므로 앱 내에서 동일한 목록을 만들 수는 없습니다. – ianhanniballake