blob: ec099a89b34fe6d8aa613f3bfc07188fdf14ee97 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.supportv4.app;
import com.example.android.supportv4.R;
import com.example.android.supportv4.content.SharingSupportProvider;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ShareCompat;
import android.support.v4.view.MenuItemCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
/**
* This example illustrates the use of the ShareCompat feature of the support library.
* ShareCompat offers several pieces of functionality to assist in sharing content between
* apps and is especially suited for sharing content to social apps that the user has installed.
*
* <p>Two other classes are relevant to this code sample: {@link SharingReceiverSupport} is
* an activity that has been configured to receive ACTION_SEND and ACTION_SEND_MULTIPLE
* sharing intents with a type of text/plain. It provides an example of writing a sharing
* target using ShareCompat features. {@link SharingSupportProvider} is a simple
* {@link android.content.ContentProvider} that provides access to two text files
* created by this app to share as content streams.</p>
*/
public class SharingSupport extends Activity {
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.sharing_support);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
ShareCompat.IntentBuilder b = ShareCompat.IntentBuilder.from(this);
b.setType("text/plain").setText("Share from menu");
MenuItem item = menu.add("Share");
ShareCompat.configureMenuItem(item, b);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
return true;
}
public void onShareTextClick(View v) {
ShareCompat.IntentBuilder.from(this)
.setType("text/plain")
.setText("I'm sharing!")
.startChooser();
}
public void onShareFileClick(View v) {
try {
// This file will be accessed by the target of the share through
// the ContentProvider SharingSupportProvider.
FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
fw.write("This is a file share");
fw.close();
ShareCompat.IntentBuilder.from(this)
.setType("text/plain")
.setStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
.startChooser();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onShareMultipleFileClick(View v) {
try {
// These files will be accessed by the target of the share through
// the ContentProvider SharingSupportProvider.
FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
fw.write("This is a file share");
fw.close();
fw = new FileWriter(getFilesDir() + "/bar.txt");
fw.write("This is another file share");
fw.close();
ShareCompat.IntentBuilder.from(this)
.setType("text/plain")
.addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
.addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/bar.txt"))
.startChooser();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}