2017-10-18 119 views
0

我嘗試從我的SD卡共享圖片。Android:無法共享來自SD卡的圖片

類MainActivity.java

Intent shareIntent = new Intent(Intent.ACTION_SEND); 

File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

String fileName = "/cats.jpg"; 

File file = new File(baseDir + fileName); 

Uri uri = Uri.fromFile(file); 

shareIntent.setType("image/*"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 

startActivity(shareIntent.createChooser(shareIntent, "Send Picture")); 

我添加到我的Manifest.xml:

uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"

形象 「貓」 是 MySmartphone\Card\DCIM\cats.jpg

當我開始我的應用程序,我可以選擇一個應用程序來分享我的照片。但是,當我打開一個,它不能發送或打開圖像。我經常吐司「不支持」或「錯誤分享圖片」。我認爲我的uri或文件是錯誤的,但我找不到我的錯誤。我沒有問題發送文本。

我的URI: file:///data/user/0/com.example.jana.showpicture/files/cats.jpg

我的文件:/storage/emulated/0/cats.jpg

+0

'法師「貓」在MySmartphone \ Card \ DCIM \ cats.jpg'中?這是一條不存在的路徑。你作爲程序員應該更清楚。嘗試找到您的圖像的真實文件路徑。 – greenapps

+0

'我的uri:file:/// data/user/0/com.example.jana.showpicture/files/cats.jpg'你從哪裏得到這個uri?那條路將是內部私人記憶。您可以使用getFilesDir()來訪問它。 – greenapps

+0

'我的文件:/storage/emulated/0/cats.jpg'。該路徑與您的uri無關,因爲它來自getExternalStorageDirectory()。你的文章是一團糟。 – greenapps

回答

0

也許你正在爲Android的API 24以上。由於API 24增加了一種新的安全性。請參閱:

https://developer.android.com/about/versions/nougat/android-7.0-changes.html#perm

現在,你需要做的多一點,在你AndroidManifest.xml補充一點:

<provider 
    android:name="android.support.v4.content.FileProvider" 
    android:authorities="com.example.jana.showpicture.provider" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/provider_paths" /> 
</provider> 

/res/xml/provider_paths.xml

<paths> 
    <external-path 
     name="external_files" 
     path="." /> 
</paths> 

而Java:

Uri uri = FileProvider.getUriForFile(activity,"com.example.jana.showpicture.provider", 
        file); 
shareIntent .setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | 
        Intent.FLAG_GRANT_READ_URI_PERMISSION); 
+0

感謝您的回答,但沒有奏效。 現在我的文件有參考:'/storage/emulated/0/DCIM/cats.jpg' 我的uri看起來像:'Content://com.example.jana.sharepicture.fileprovider/external_files/DCIM/cats.jpg ' 該應用程序的工作方式如上所述。如果我想分享我的圖片作爲電子郵件附件, 我在logcat中遇到錯誤:'W/System.err:stat失敗:ENOENT(沒有這樣的文件或目錄):/ storage/emulated/0/DCIM/cats,jpg ' – Jana