2017-11-19 4 views
1

안드로이드에 내 응용 프로그램에서 CSV 파일을 보급하고 싶습니다. AndroidManifest에 다음 코드를 입력했으나 Android 시뮬레이터 나 휴대 전화에 설치하고 저장 공간에서 .csv 파일을 열려고하면 아무 일도 발생하지 않습니다.Andoird - 내 기본 응용 프로그램을 만들어 CSV 파일을 엽니 다.

<intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="file" /> 
      <data android:mimeType="*/*" /> 
      <data android:pathPattern=".*\\.csv" /> 
      <data android:host="*" /> 
     </intent-filter> 
  1. 내 휴대 전화에서 .csv 파일을 여는에서 저를 중지 그 무엇을 놓치고?
  2. 파일 URL에 액세스 할 수 있도록 내 앱에 파일 URL을 전달하려면 어떻게해야합니까?

미리 감사드립니다.

답변

1

내 휴대 전화에서 .csv 파일을 열 수 없게 된 것은 무엇입니까? 다음

귀하의 텐트 필터 요구은 당신이 최고입니다 CSV 파일을 열려면 이후 pathPattern이 가능한 파일 이름의 모든 종류의 제대로하기가 매우 어렵습니다,

  • 사용 MIME 타입 대신 pathPattern의 필터 변경

  • 변경 방식을해야 mimeType를 필터 "텍스트/CSV"를 사용하는 것은 "내용", 계획 파일은 포스트 안드로이드 작동하지 않습니다 7

앱이 외부 // URI를 :

Android 7.0 Behavior Changes

안드로이드 7.0을 대상으로 앱의 앱 사이의 파일 공유는 안드로이드 프레임 워크는 파일을 노출 금지하는 StrictMode의 API 정책을 적용합니다. 파일 URI가 포함 된 인 텐트가 앱을 떠나는 경우 FileUriExposedException 예외로 인해 앱이 실패합니다.

응용 프로그램간에 파일을 공유하려면 content : // URI를 보내고 URI에 대한 임시 액세스 권한을 부여해야합니다. 이 권한을 부여하는 가장 쉬운 방법은 FileProvider 클래스를 사용하는 것입니다. 사용 권한 및 파일 공유에 대한 자세한 내용은 파일 공유를 참조하십시오.

의도 필터를 다음과 같이 변경하면 효과가 있습니다.

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="content" /> 
      <data android:mimeType="text/csv"/> 
      <data android:host="*" /> 
     </intent-filter> 
+0

This WORKED! 고마워. 내가 할 수있는 경우 후속 질문 : 열린 파일의 Uri를 어떻게 얻어야 내 앱이 액세스 할 수 있습니까? – user8964609