Fixed crashed when the user tries to upload to ownCloud some content for wich the...
authorDavid A. Velasco <dvelasco@solidgear.es>
Fri, 3 Aug 2012 09:39:08 +0000 (11:39 +0200)
committerDavid A. Velasco <dvelasco@solidgear.es>
Fri, 3 Aug 2012 09:39:08 +0000 (11:39 +0200)
res/values/strings.xml
src/com/owncloud/android/Uploader.java

index c482937..e559afe 100644 (file)
@@ -57,6 +57,7 @@
     <string name="uploader_wrn_no_account_text">There are no ownCloud accounts on your device. Please setup an account first.</string>
     <string name="uploader_wrn_no_account_setup_btn_text">Setup</string>
     <string name="uploader_wrn_no_account_quit_btn_text">Quit</string>
     <string name="uploader_wrn_no_account_text">There are no ownCloud accounts on your device. Please setup an account first.</string>
     <string name="uploader_wrn_no_account_setup_btn_text">Setup</string>
     <string name="uploader_wrn_no_account_quit_btn_text">Quit</string>
+    <string name="uploader_error_forbidden_content">ownCloud is not allowed to access the shared content</string>
     <string name="uploader_info_uploading">Uploading</string>
     <string name="uploader_btn_create_dir_text">Create directory for upload</string>
     <string name="filedetails_select_file">Tap on a file to display additional information.</string>
     <string name="uploader_info_uploading">Uploading</string>
     <string name="uploader_btn_create_dir_text">Create directory for upload</string>
     <string name="filedetails_select_file">Tap on a file to display additional information.</string>
index 718911d..d6e7a4a 100644 (file)
@@ -56,6 +56,8 @@ import android.widget.AdapterView.OnItemClickListener;
 import android.widget.Button;\r
 import android.widget.EditText;\r
 import android.widget.SimpleAdapter;\r
 import android.widget.Button;\r
 import android.widget.EditText;\r
 import android.widget.SimpleAdapter;\r
+import android.widget.Toast;\r
+\r
 import com.owncloud.android.R;\r
 import eu.alefzero.webdav.WebdavClient;\r
 \r
 import com.owncloud.android.R;\r
 import eu.alefzero.webdav.WebdavClient;\r
 \r
@@ -370,46 +372,51 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
     }\r
 \r
     public void uploadFiles() {\r
     }\r
 \r
     public void uploadFiles() {\r
-        WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
-        wdc.allowSelfsignedCertificates();\r
+        try {\r
+            WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
+            wdc.allowSelfsignedCertificates();\r
 \r
 \r
-        // create last directory in path if nessesary\r
-        if (mCreateDir) {\r
-            wdc.createDirectory(mUploadPath);\r
-        }\r
+            // create last directory in path if necessary\r
+            if (mCreateDir) {\r
+                wdc.createDirectory(mUploadPath);\r
+            }\r
 \r
 \r
-        String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()];\r
+            String[] local = new String[mStreamsToUpload.size()], remote = new String[mStreamsToUpload.size()];\r
 \r
 \r
-        for (int i = 0; i < mStreamsToUpload.size(); ++i) {\r
-            Uri uri = (Uri) mStreamsToUpload.get(i);\r
-            if (uri.getScheme().equals("content")) {\r
-                Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i),\r
+            for (int i = 0; i < mStreamsToUpload.size(); ++i) {\r
+                Uri uri = (Uri) mStreamsToUpload.get(i);\r
+                if (uri.getScheme().equals("content")) {\r
+                    Cursor c = getContentResolver().query((Uri) mStreamsToUpload.get(i),\r
                                                       CONTENT_PROJECTION,\r
                                                       null,\r
                                                       null,\r
                                                       null);\r
 \r
                                                       CONTENT_PROJECTION,\r
                                                       null,\r
                                                       null,\r
                                                       null);\r
 \r
-                if (!c.moveToFirst())\r
-                    continue;\r
-\r
-                final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
-                             data = c.getString(c.getColumnIndex(Media.DATA));\r
-                local[i] = data;\r
-                remote[i] = mUploadPath + display_name;\r
-            } else if (uri.getScheme().equals("file")) {\r
-                final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", ""));\r
-                local[i] = file.getAbsolutePath();\r
-                remote[i] = mUploadPath + file.getName();\r
-            }\r
+                    if (!c.moveToFirst())\r
+                        continue;\r
 \r
 \r
+                    final String display_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME)),\r
+                                data = c.getString(c.getColumnIndex(Media.DATA));\r
+                    local[i] = data;\r
+                    remote[i] = mUploadPath + display_name;\r
+                } else if (uri.getScheme().equals("file")) {\r
+                    final File file = new File(Uri.decode(uri.toString()).replace(uri.getScheme() + "://", ""));\r
+                    local[i] = file.getAbsolutePath();\r
+                    remote[i] = mUploadPath + file.getName();\r
+                }\r
+\r
+            }\r
+            Intent intent = new Intent(getApplicationContext(), FileUploader.class);\r
+            intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);\r
+            intent.putExtra(FileUploader.KEY_LOCAL_FILE, local);\r
+            intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote);\r
+            intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount);\r
+            startService(intent);\r
+            finish();\r
+            \r
+        } catch (SecurityException e) {\r
+            Toast.makeText(this, getString(R.string.uploader_error_forbidden_content), Toast.LENGTH_LONG).show();\r
         }\r
         }\r
-        Intent intent = new Intent(getApplicationContext(), FileUploader.class);\r
-        intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);\r
-        intent.putExtra(FileUploader.KEY_LOCAL_FILE, local);\r
-        intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote);\r
-        intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount);\r
-        startService(intent);\r
-        finish();\r
     }\r
 \r
 }\r
     }\r
 \r
 }\r