SharingSupport.java revision 8895d250320d796ef2d95881c104a11d81ca415f
1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.example.android.supportv4.app;
18
19import com.example.android.supportv4.R;
20import com.example.android.supportv4.content.SharingSupportProvider;
21
22import android.app.Activity;
23import android.net.Uri;
24import android.os.Bundle;
25import android.support.v4.app.ShareCompat;
26import android.support.v4.view.MenuItemCompat;
27import android.view.Menu;
28import android.view.MenuItem;
29import android.view.View;
30
31import java.io.FileNotFoundException;
32import java.io.FileWriter;
33import java.io.IOException;
34
35/**
36 * This example illustrates the use of the ShareCompat feature of the support library.
37 * ShareCompat offers several pieces of functionality to assist in sharing content between
38 * apps and is especially suited for sharing content to social apps that the user has installed.
39 *
40 * <p>Two other classes are relevant to this code sample: {@link SharingReceiverSupport} is
41 * an activity that has been configured to receive ACTION_SEND and ACTION_SEND_MULTIPLE
42 * sharing intents with a type of text/plain. It provides an example of writing a sharing
43 * target using ShareCompat features. {@link SharingSupportProvider} is a simple
44 * {@link android.content.ContentProvider} that provides access to two text files
45 * created by this app to share as content streams.</p>
46 */
47public class SharingSupport extends Activity {
48    @Override
49    protected void onCreate(Bundle b) {
50        super.onCreate(b);
51        setContentView(R.layout.sharing_support);
52    }
53
54    @Override
55    public boolean onCreateOptionsMenu(Menu menu) {
56        ShareCompat.IntentBuilder b = ShareCompat.IntentBuilder.from(this);
57        b.setType("text/plain").setText("Share from menu");
58        MenuItem item = menu.add("Share");
59        ShareCompat.configureMenuItem(item, b);
60        MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
61        return true;
62    }
63
64    public void onShareTextClick(View v) {
65        ShareCompat.IntentBuilder.from(this)
66                .setType("text/plain")
67                .setText("I'm sharing!")
68                .startChooser();
69    }
70
71    public void onShareFileClick(View v) {
72        try {
73            // This file will be accessed by the target of the share through
74            // the ContentProvider SharingSupportProvider.
75            FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
76            fw.write("This is a file share");
77            fw.close();
78
79            ShareCompat.IntentBuilder.from(this)
80                    .setType("text/plain")
81                    .setStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
82                    .startChooser();
83        } catch (FileNotFoundException e) {
84            e.printStackTrace();
85        } catch (IOException e) {
86            e.printStackTrace();
87        }
88    }
89
90    public void onShareMultipleFileClick(View v) {
91        try {
92            // These files will be accessed by the target of the share through
93            // the ContentProvider SharingSupportProvider.
94            FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
95            fw.write("This is a file share");
96            fw.close();
97
98            fw = new FileWriter(getFilesDir() + "/bar.txt");
99            fw.write("This is another file share");
100            fw.close();
101
102            ShareCompat.IntentBuilder.from(this)
103                    .setType("text/plain")
104                    .addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
105                    .addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/bar.txt"))
106                    .startChooser();
107        } catch (FileNotFoundException e) {
108            e.printStackTrace();
109        } catch (IOException e) {
110            e.printStackTrace();
111        }
112    }
113}
114