11482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey/* 21482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * Copyright (C) 2013 The Android Open Source Project 31482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * 41482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 51482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * you may not use this file except in compliance with the License. 61482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * You may obtain a copy of the License at 71482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * 81482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 91482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * 101482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * Unless required by applicable law or agreed to in writing, software 111482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 121482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * See the License for the specific language governing permissions and 141482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey * limitations under the License. 151482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey */ 161482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 171482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeypackage com.android.documentsui; 181482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 191482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.app.Activity; 201482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.content.Context; 211482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.content.Intent; 2292d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkeyimport android.net.Uri; 231482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.os.Bundle; 24ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkeyimport android.provider.DocumentsContract; 2592d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkeyimport android.util.Log; 261482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.view.View; 271482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.view.View.OnClickListener; 281482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.widget.Button; 291482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.widget.CheckBox; 301482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.widget.LinearLayout; 31deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkeyimport android.widget.ScrollView; 321482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeyimport android.widget.TextView; 331482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 3492d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkeyimport libcore.io.IoUtils; 3592d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkeyimport libcore.io.Streams; 3692d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey 3792d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkeyimport java.io.InputStream; 38e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkeyimport java.io.OutputStream; 3992d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey 401482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkeypublic class TestActivity extends Activity { 4192d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey private static final String TAG = "TestActivity"; 4292d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey 43e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey private static final int CODE_READ = 42; 44e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey private static final int CODE_WRITE = 43; 45e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey 461482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey private TextView mResult; 471482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 481482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 491482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey public void onCreate(Bundle icicle) { 501482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey super.onCreate(icicle); 511482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 521482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey final Context context = this; 531482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 541482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey final LinearLayout view = new LinearLayout(context); 551482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.setOrientation(LinearLayout.VERTICAL); 561482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 57deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey mResult = new TextView(context); 58deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey view.addView(mResult); 59deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey 601482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey final CheckBox multiple = new CheckBox(context); 61e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey multiple.setText("ALLOW_MULTIPLE"); 621482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.addView(multiple); 63348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey final CheckBox localOnly = new CheckBox(context); 64e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey localOnly.setText("LOCAL_ONLY"); 65348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey view.addView(localOnly); 661482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 671482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey Button button; 681482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button = new Button(context); 691482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setText("OPEN_DOC */*"); 701482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setOnClickListener(new OnClickListener() { 711482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 721482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey public void onClick(View v) { 731482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 7454ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 751482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.setType("*/*"); 761482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey if (multiple.isChecked()) { 771482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 781482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 79348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 80348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 81348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 82e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(intent, CODE_READ); 831482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 841482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey }); 851482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.addView(button); 861482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 871482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button = new Button(context); 881482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setText("OPEN_DOC image/*"); 891482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setOnClickListener(new OnClickListener() { 901482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 911482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey public void onClick(View v) { 921482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 9354ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 941482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.setType("image/*"); 951482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey if (multiple.isChecked()) { 961482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 971482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 98348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 99348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 100348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 101e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(intent, CODE_READ); 102348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 103348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey }); 104348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey view.addView(button); 105348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey 106348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey button = new Button(context); 107348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey button.setText("OPEN_DOC audio/ogg"); 108348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey button.setOnClickListener(new OnClickListener() { 109348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey @Override 110348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey public void onClick(View v) { 111348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 112348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 113348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.setType("audio/ogg"); 114348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (multiple.isChecked()) { 115348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 116348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 117348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 118348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 119348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 120e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(intent, CODE_READ); 1211482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 1221482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey }); 1231482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.addView(button); 1241482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 1251482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button = new Button(context); 1261482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setText("OPEN_DOC text/plain, application/msword"); 1271482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setOnClickListener(new OnClickListener() { 1281482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 1291482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey public void onClick(View v) { 1301482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 13154ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 1321482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.setType("*/*"); 1331482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] { 1341482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey "text/plain", "application/msword" }); 1351482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey if (multiple.isChecked()) { 1361482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 1371482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 138348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 139348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 140348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 141e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(intent, CODE_READ); 1421482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 1431482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey }); 1441482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.addView(button); 1451482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 1461482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button = new Button(context); 1471482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setText("CREATE_DOC text/plain"); 1481482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey button.setOnClickListener(new OnClickListener() { 1491482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 1501482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey public void onClick(View v) { 1511482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); 15254ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 1531482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.setType("text/plain"); 1541482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey intent.putExtra(Intent.EXTRA_TITLE, "foobar.txt"); 155348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 156348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 157348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 158e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(intent, CODE_WRITE); 1591482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 1601482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey }); 1611482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey view.addView(button); 1621482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 16354ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey button = new Button(context); 164deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey button.setText("CREATE_DOC image/png"); 165deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey button.setOnClickListener(new OnClickListener() { 166deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey @Override 167deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey public void onClick(View v) { 168deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); 169deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 170deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey intent.setType("image/png"); 171deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey intent.putExtra(Intent.EXTRA_TITLE, "mypicture.png"); 172deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey if (localOnly.isChecked()) { 173deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 174deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey } 175deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey startActivityForResult(intent, CODE_WRITE); 176deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey } 177deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey }); 178deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey view.addView(button); 179deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey 180deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey button = new Button(context); 18154ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey button.setText("GET_CONTENT */*"); 18254ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey button.setOnClickListener(new OnClickListener() { 18354ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey @Override 18454ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey public void onClick(View v) { 18554ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 18654ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.addCategory(Intent.CATEGORY_OPENABLE); 18754ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.setType("*/*"); 18854ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey if (multiple.isChecked()) { 18954ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 19054ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey } 191348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey if (localOnly.isChecked()) { 192348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 193348ad6866b91afa4d59d45df533ef88094c74d13Jeff Sharkey } 194e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey startActivityForResult(Intent.createChooser(intent, "Kittens!"), CODE_READ); 19554ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey } 19654ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey }); 19754ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey view.addView(button); 19854ca29a5b94c2edf461c5433825d4ae17469fd7cJeff Sharkey 199deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey final ScrollView scroll = new ScrollView(context); 200deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey scroll.addView(view); 2011482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 202deffadeb7485e8660ecce12822e259d96fa06dceJeff Sharkey setContentView(scroll); 2031482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 2041482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey 2051482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey @Override 2061482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey protected void onActivityResult(int requestCode, int resultCode, Intent data) { 207e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey mResult.setText(null); 208e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey String result = "resultCode=" + resultCode + ", data=" + String.valueOf(data); 209e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey 210e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey if (requestCode == CODE_READ) { 211e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey final Uri uri = data != null ? data.getData() : null; 212e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey if (uri != null) { 213ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey if (DocumentsContract.isDocumentUri(this, uri)) { 214ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey result += "; DOC_ID"; 215ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey } 2166efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey try { 2176efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey getContentResolver().takePersistableUriPermission( 2186efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); 2196efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey } catch (SecurityException e) { 2206efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey result += "; FAILED TO TAKE"; 2216efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey Log.e(TAG, "Failed to take", e); 2226efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey } 223e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey InputStream is = null; 224e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey try { 225e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey is = getContentResolver().openInputStream(uri); 226e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey final int length = Streams.readFullyNoClose(is).length; 227e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey result += "; read length=" + length; 228e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } catch (Exception e) { 229e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey result += "; ERROR"; 2306efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey Log.e(TAG, "Failed to read " + uri, e); 231e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } finally { 232e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey IoUtils.closeQuietly(is); 233e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } 234e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } else { 235e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey result += "no uri?"; 236e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } 237e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } else if (requestCode == CODE_WRITE) { 238e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey final Uri uri = data != null ? data.getData() : null; 239e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey if (uri != null) { 240ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey if (DocumentsContract.isDocumentUri(this, uri)) { 241ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey result += "; DOC_ID"; 242ee2f7df9ee8a4f43c3b0858bad08a4f0a59a627fJeff Sharkey } 2436efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey try { 2446efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey getContentResolver().takePersistableUriPermission( 2456efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 2466efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey } catch (SecurityException e) { 2476efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey result += "; FAILED TO TAKE"; 2486efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey Log.e(TAG, "Failed to take", e); 2496efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey } 250e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey OutputStream os = null; 251e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey try { 252e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey os = getContentResolver().openOutputStream(uri); 253e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey os.write("THE COMPLETE WORKS OF SHAKESPEARE".getBytes()); 254e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } catch (Exception e) { 255e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey result += "; ERROR"; 2566efba22ce510352bb84910d6efc42fecafd31ed7Jeff Sharkey Log.e(TAG, "Failed to write " + uri, e); 257e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } finally { 258e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey IoUtils.closeQuietly(os); 259e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } 260e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey } else { 261e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey result += "no uri?"; 26292d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey } 26392d7e697a864a3e18bef4ef256bb3eb339a66b4eJeff Sharkey } 264e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey 265e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey Log.d(TAG, result); 266e37ea6123d1aa3cd3e8804988886b1f6046d79d6Jeff Sharkey mResult.setText(result); 2671482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey } 2681482789374fb8da3abea8f6f4f272a67205b95dbJeff Sharkey} 269