OSDN Git Service

Handle failure to create file.
authorPhilip P. Moltmann <moltmann@google.com>
Wed, 11 May 2016 22:04:11 +0000 (15:04 -0700)
committerPhilip P. Moltmann <moltmann@google.com>
Wed, 11 May 2016 22:04:17 +0000 (15:04 -0700)
This should never happen unless you disable the DocumentsUI app. Hence
handle it by a simple toast.

Bug: 28709934
Change-Id: Iac4aff32617120c442e0f994a2a8c0ce3cca380d

packages/PrintSpooler/res/values/strings.xml
packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java

index 2836adb..1342945 100644 (file)
     <!-- Description of printer info icon. [CHAR LIMIT=50] -->
     <string name="printer_info_desc">More information about this printer</string>
 
+    <!-- Notification that we could not create a file name for the printed PDF. [CHAR LIMIT=50] -->
+    <string name="could_not_create_file">Could not create file</string>
+
     <!-- Notification that print services as disabled. [CHAR LIMIT=50] -->
     <string name="print_services_disabled_toast">Some print services are disabled</string>
 
index cc0b4ca..8b1fd08 100644 (file)
@@ -84,6 +84,7 @@ import android.widget.ImageView;
 import android.widget.Spinner;
 import android.widget.TextView;
 
+import android.widget.Toast;
 import com.android.internal.logging.MetricsLogger;
 import com.android.printspooler.R;
 import com.android.printspooler.model.MutexFileProvider;
@@ -658,7 +659,15 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
         intent.setType("application/pdf");
         intent.putExtra(Intent.EXTRA_TITLE, info.getName());
         intent.putExtra(DocumentsContract.EXTRA_PACKAGE_NAME, mCallingPackageName);
-        startActivityForResult(intent, ACTIVITY_REQUEST_CREATE_FILE);
+
+        try {
+            startActivityForResult(intent, ACTIVITY_REQUEST_CREATE_FILE);
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Could not create file", e);
+            Toast.makeText(this, getString(R.string.could_not_create_file),
+                    Toast.LENGTH_SHORT).show();
+            onStartCreateDocumentActivityResult(RESULT_CANCELED, null);
+        }
     }
 
     private void onStartCreateDocumentActivityResult(int resultCode, Intent data) {