Fixed crashed when the user tries to upload to ownCloud some content for wich the...
[pub/Android/ownCloud.git] / src / com / owncloud / android / Uploader.java
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.Toast;\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
-        WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
-        wdc.allowSelfsignedCertificates();\r
+        try {\r
+            WebdavClient wdc = new WebdavClient(mAccount, getApplicationContext());\r
+            wdc.allowSelfsignedCertificates();\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
-        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
-        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
-                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
+                    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
-        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