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