Android 使用移动SDK将文件上载到alfresco

Android 使用移动SDK将文件上载到alfresco,android,file,upload,sdk,alfresco,Android,File,Upload,Sdk,Alfresco,我试图上传一个文件在Alfresco的文件夹里,但我得到了一个例外,我在过去两天里没有任何机会试图解决这个问题 我正在使用用于Android的Alfresco Mobile SDK和Alfresco Community 4.2 以下是我如何尝试上传文件,如果我做错了,请告诉我: File fileToUpload = new File(selectedFilePath); if((fileToUpload != null) && fileToUpload.

我试图上传一个文件在Alfresco的文件夹里,但我得到了一个例外,我在过去两天里没有任何机会试图解决这个问题

我正在使用用于Android的Alfresco Mobile SDK和Alfresco Community 4.2

以下是我如何尝试上传文件,如果我做错了,请告诉我:

File fileToUpload = new File(selectedFilePath);
            if((fileToUpload != null) && fileToUpload.isFile()) {
                Log.d(MainActivity.DEBUGING, "File to upload's name: " + fileToUpload.getName());
                String fileName = fileToUpload.getName();
                String mimeType = getMimeType(selectedFilePath);
                ContentFile contentFile = new ContentFileImpl(fileToUpload, fileName, mimeType);

                try {
                    Log.w(MainActivity.DEBUGING, "create file: " + fileName + " of type: " + mimeType +  " in: " + selectedFilePath);

                    session.getServiceRegistry().getDocumentFolderService().createDocument(currentFolder, fileName, properties, contentFile);

                    Toast.makeText(this, "file: " + fileName + " of type: " + mimeType +  "in: " + selectedFilePath + " was created", Toast.LENGTH_LONG).show();

                }
                catch(org.alfresco.mobile.android.api.exceptions.AlfrescoServiceException e) {
                    Toast.makeText(this, "Upload failed ! ", Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
            }
//

这是我在日志中得到的异常:

04-22 11:29:09.475: W/System.err(616):   org.alfresco.mobile.android.api.exceptions.AlfrescoServiceException: org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: Cannot access http://192.168.1.15:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom/children?id=37f6caba-bd45-4191-96b3-3604d4cbb9be&versioningState=major: null
04-22 11:29:09.475: W/System.err(616):  at org.alfresco.mobile.android.api.exceptions.impl.ExceptionHelper.convertException(ExceptionHelper.java:119)
04-22 11:29:09.475: W/System.err(616):  at org.alfresco.mobile.android.api.services.impl.AlfrescoService.convertException(AlfrescoService.java:302)
04-22 11:29:09.475: W/System.err(616):  at org.alfresco.mobile.android.api.services.impl.AbstractDocumentFolderServiceImpl.createDocument(AbstractDocumentFolderServiceImpl.java:542)
04-22 11:29:09.475: W/System.err(616):  at org.alfresco.mobile.android.api.services.impl.AbstractDocumentFolderServiceImpl.createDocument(AbstractDocumentFolderServiceImpl.java:458)
04-22 11:29:09.484: W/System.err(616):  at org.valueit.turboecm.MyTurboECMBrowserActivity.onActivityResult(MyTurboECMBrowserActivity.java:364)
04-22 11:29:09.484: W/System.err(616):  at android.app.Activity.dispatchActivityResult(Activity.java:5192)
04-22 11:29:09.484: W/System.err(616):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3137)
04-22 11:29:09.484: W/System.err(616):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
04-22 11:29:09.484: W/System.err(616):  at android.app.ActivityThread.access$1100(ActivityThread.java:130)
04-22 11:29:09.494: W/System.err(616):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
04-22 11:29:09.494: W/System.err(616):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-22 11:29:09.494: W/System.err(616):  at android.os.Looper.loop(Looper.java:137)
04-22 11:29:09.494: W/System.err(616):  at android.app.ActivityThread.main(ActivityThread.java:4745)
04-22 11:29:09.504: W/System.err(616):  at java.lang.reflect.Method.invokeNative(Native Method)
04-22 11:29:09.504: W/System.err(616):  at java.lang.reflect.Method.invoke(Method.java:511)
04-22 11:29:09.504: W/System.err(616):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-22 11:29:09.504: W/System.err(616):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-22 11:29:09.514: W/System.err(616):  at dalvik.system.NativeStart.main(Native Method)
04-22 11:29:09.514: W/System.err(616): Caused by: org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: Cannot access http://192.168.1.15:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom/children?id=37f6caba-bd45-4191-96b3-3604d4cbb9be&versioningState=major: null
04-22 11:29:09.514: W/System.err(616):  at org.alfresco.mobile.android.api.network.NetworkHttpInvoker.invoke(NetworkHttpInvoker.java:291)
04-22 11:29:09.514: W/System.err(616):  at org.alfresco.mobile.android.api.network.NetworkHttpInvoker.invokePOST(NetworkHttpInvoker.java:74)
04-22 11:29:09.524: W/System.err(616):  at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post(AbstractAtomPubService.java:616)
04-22 11:29:09.524: W/System.err(616):  at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.createDocument(ObjectServiceImpl.java:116)
04-22 11:29:09.524: W/System.err(616):  at org.alfresco.mobile.android.api.services.impl.AbstractDocumentFolderServiceImpl.createDocument(AbstractDocumentFolderServiceImpl.java:511)
04-22 11:29:09.524: W/System.err(616):  ... 15 more
04-22 11:29:09.534: W/System.err(616): Caused by: android.os.NetworkOnMainThreadException
04-22 11:29:09.544: W/System.err(616):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
04-22 11:29:09.544: W/System.err(616):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
04-22 11:29:09.544: W/System.err(616):  at libcore.io.IoBridge.connectErrno(IoBridge.java:144)
04-22 11:29:09.544: W/System.err(616):  at libcore.io.IoBridge.connect(IoBridge.java:112)
04-22 11:29:09.554: W/System.err(616):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
04-22 11:29:09.554: W/System.err(616):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
04-22 11:29:09.554: W/System.err(616):  at java.net.Socket.connect(Socket.java:842)
04-22 11:29:09.564: W/System.err(616):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
04-22 11:29:09.564: W/System.err(616):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-22 11:29:09.564: W/System.err(616):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
04-22 11:29:09.564: W/System.err(616):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
04-22 11:29:09.564: W/System.err(616):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-22 11:29:09.574: W/System.err(616):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
04-22 11:29:09.574: W/System.err(616):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
04-22 11:29:09.574: W/System.err(616):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
04-22 11:29:09.584: W/System.err(616):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
04-22 11:29:09.584: W/System.err(616):  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
04-22 11:29:09.584: W/System.err(616):  at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
04-22 11:29:09.584: W/System.err(616):  at org.alfresco.mobile.android.api.network.NetworkHttpInvoker.invoke(NetworkHttpInvoker.java:264)
04-22 11:29:09.584: W/System.err(616):  ... 19 more
04-22 11:29:09.596: W/debogage(616): ====================> filePath: /dev/10173306_804433689584264_1962438159_n.jpg
阿罗阿

这只是给其他开发者的一个小提示:

如果崩溃后在日志中看到这一行

04-22 11:29:09.534:W/System.err(616):由以下原因引起:android.os.NetworkOnMainThreadException

这意味着您需要在后台线程中运行代码,如AsyncTask、Loader、Thread。。。而不是应用程序的主/UI线程。
任何与网络相关的操作都必须在Android的主线程之外进行。

您是否确定Alfresco服务器的IP地址正确,没有防火墙,并且您的手机可以访问该IP?我使用的是AVD,IP地址正确,除非连接到alfresco服务器,否则我无法进入这个阶段。你的alfresco日志显示了什么?有什么错误报告吗?例如权限被拒绝?问题已解决,我正在使用此文件对话框设置路径:我将其从项目中删除,并使用asynctask在后台线程中执行loadInBackGround,我还在代码中静态定义路径,直到找到另一个文件对话框,一切正常。非常感谢@Gagravarr为您花费的时间
DocumentCreateLoader contentCreator = new DocumentCreateLoader(this, session, currentFolder, fileName, properties, contentFile);
contentCreator.loadInBackground();