2016-08-29 4 views
-1

인텐 트를 통해 일부 오디오 파일을 전보, google 드라이브, whatsapp과 같은 다른 앱과 공유 할 수 있습니까? 내 파일 다운로드처럼, 내 응용 프로그램 개인 폴더에 보관되고있다 : /data/user/0/myPackage/app_NameOfFolder/file.mp3 나는이 간단한 방법 썼다Android 공유 앱의 개인 파일

:

public void sendSound(String fileToSend){ 
    try{ 

     Log.d(TAG,"Sending: " + fileToSend); 
     Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
     Uri audioUri = Uri.parse(fileToSend); 
     sharingIntent.setType("audio/*"); 
     sharingIntent.putExtra(Intent.EXTRA_STREAM, audioUri); 
     startActivity(Intent.createChooser(sharingIntent, "Share")); 

    }catch (Exception e){ 
     Log.d("TAG",e.getMessage()); 
     Log.d("TAG",e.toString()); 
    } 

} 

을하지만 난 ' 내가 좋아하는, 공공 디렉토리에 파일을 이동하면 "을 공유 할 수 없습니다 다시 시도하십시오": m 오류가 받고, 그것을 공유 할 수없는 의미가 있습니다 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() +"/file.mp3";

, 그래서 그것을 허가와 관련된 뭔가 생각, 그래서 이것은이다 내 매니페스트 :

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

나는 무엇을 잘못하고 있니.

+0

죄송합니다. –

+0

** 파일을 이메일 파일에 첨부하여 일반 파일 **로 공유 할 수 있습니다 **. 'intent chooser '를 사용하면, 그것을 보낼 때 사용할 앱을 선택할 수 있습니다. –

답변

4

타사 앱에는 internal storage 부분에 대한 권한이 없습니다.

대부분이 getFilesDir() 또는 getCacheDir() 인 경우이 파일을 다른 앱에서 사용할 수 있도록하려면 use FileProvider 일 수 있습니다.

+0

좋아, 나는 그것을 시도해 줄 것이다, 해결책을 가르쳐 주셔서 고맙다. – Vesco

+0

잘 [** 여기 **] (https://stackoverflow.com/q/46789824/2624806) 비슷한 노력하고있어. 내가 누락 된 어떤 제안? – CoDe