2017-09-09 63 views
0

我正在創建一個android庫,並使用儀器test.And我使用Android Studio 3.0進行單元測試。Android Retrofit 2.0使用圖像,視頻和音頻上傳與MultipartBody.Par方法

這是我的代碼(控制器類)

File file = new File("/storage/emulated/0/DCIM/Facebook/FB_IMG_1496146656900.jpg"); 

RequestBody reqFile = RequestBody.create(MediaType.parse("image/jpeg"), file); 
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), reqFile); 
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), noteId); 
String notebookId = getNotebookId(projectId); 
if (isSessionAvailable(notebookId)) { 
    String session = getNotebookSession(notebookId); 
    Call<ResponseBody> call = mApiNotes.requestNotesAttachments(session, name, body); 
    call.enqueue(new NoteAttachmentCallBacks.AddNoteAttachmentCallback(assetUploadCallbacks)); 
} 

而且更新接口是

@Multipart 
@POST("/NotebookAsset") 
Call<ResponseBody> requestNotesAttachments(@Header("Cookie") String notebookSession, @Part("note_id") RequestBody noteId, @Part MultipartBody.Part image); 

但是當我運行的代碼,這是行不通的。呼叫改造接口類後,測試只是瀏覽,甚至沒有結束。它不斷運行測試,但永遠不會結束。看起來資產沒有上傳。

大致我認爲,
有權限訪問設備中的資源的問題。所以我添加了清單文件的權限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

但它不是解決方案。結果是一樣的。

你可以看看這個問題嗎?我已經完全封鎖了這個問題。

回答

0

好吧,我找到了解決方案。這是因爲Marshmallows版本。從版本23開始從Android設備讀取文件,需要運行時權限。

當我嘗試使用Jelly Bean的設備時,代碼運行良好。

無論如何,要檢查這個問題的版本,我們可以按照這個解決方案Storage permission error in Marshmallow