• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2010, 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 
17 package com.example.android.apis.content;
18 
19 import com.example.android.apis.R;
20 
21 import android.app.Activity;
22 import android.content.ClipboardManager;
23 import android.content.ClipData;
24 import android.content.Context;
25 import android.content.Intent;
26 import android.content.res.Resources;
27 import android.net.Uri;
28 import android.os.Bundle;
29 import android.view.View;
30 import android.widget.AdapterView;
31 import android.widget.ArrayAdapter;
32 import android.widget.EditText;
33 import android.widget.Spinner;
34 import android.widget.TextView;
35 import android.widget.AdapterView.OnItemSelectedListener;
36 
37 public class ClipboardSample extends Activity {
38     ClipboardManager mClipboard;
39 
40     Spinner mSpinner;
41     TextView mMimeTypes;
42     EditText mEditText;
43 
44     CharSequence mStyledText;
45     String mPlainText;
46 
47     ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
48             = new ClipboardManager.OnPrimaryClipChangedListener() {
49         public void onPrimaryClipChanged() {
50             updateClipData();
51         }
52     };
53 
54     @Override
onCreate(Bundle savedInstanceState)55     protected void onCreate(Bundle savedInstanceState) {
56         super.onCreate(savedInstanceState);
57 
58         mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
59 
60         // See res/any/layout/resources.xml for this view layout definition.
61         setContentView(R.layout.clipboard);
62 
63         TextView tv;
64 
65         mStyledText = getText(R.string.styled_text);
66         tv = (TextView)findViewById(R.id.styled_text);
67         tv.setText(mStyledText);
68 
69         mPlainText = mStyledText.toString();
70         tv = (TextView)findViewById(R.id.plain_text);
71         tv.setText(mPlainText);
72 
73         mSpinner = (Spinner) findViewById(R.id.clip_type);
74         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
75                 this, R.array.clip_data_types, android.R.layout.simple_spinner_item);
76         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
77         mSpinner.setAdapter(adapter);
78         mSpinner.setOnItemSelectedListener(
79                 new OnItemSelectedListener() {
80                     public void onItemSelected(
81                             AdapterView<?> parent, View view, int position, long id) {
82                     }
83                     public void onNothingSelected(AdapterView<?> parent) {
84                     }
85                 });
86 
87         mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);
88         mEditText = (EditText)findViewById(R.id.clip_text);
89 
90         mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
91         updateClipData();
92     }
93 
94     @Override
onDestroy()95     protected void onDestroy() {
96         super.onDestroy();
97         mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
98     }
99 
pasteStyledText(View button)100     public void pasteStyledText(View button) {
101         mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText));
102     }
103 
pastePlainText(View button)104     public void pastePlainText(View button) {
105         mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));
106     }
107 
pasteIntent(View button)108     public void pasteIntent(View button) {
109         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
110         mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));
111     }
112 
pasteUri(View button)113     public void pasteUri(View button) {
114         mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));
115     }
116 
updateClipData()117     void updateClipData() {
118         ClipData clip = mClipboard.getPrimaryClip();
119         String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null;
120         mMimeTypes.setText("");
121         if (mimeTypes != null) {
122             for (int i=0; i<mimeTypes.length; i++) {
123                 mMimeTypes.append(mimeTypes[i]);
124                 mMimeTypes.append("\n");
125             }
126         }
127         if (clip == null) {
128             mSpinner.setSelection(0);
129             mEditText.setText("");
130         } else if (clip.getItemAt(0).getText() != null) {
131             mSpinner.setSelection(1);
132             mEditText.setText(clip.getItemAt(0).getText());
133         } else if (clip.getItemAt(0).getIntent() != null) {
134             mSpinner.setSelection(2);
135             mEditText.setText(clip.getItemAt(0).getIntent().toUri(0));
136         } else if (clip.getItemAt(0).getUri() != null) {
137             mSpinner.setSelection(3);
138             mEditText.setText(clip.getItemAt(0).getUri().toString());
139         } else {
140             mSpinner.setSelection(0);
141             mEditText.setText("Clip containing no data");
142         }
143     }
144 }
145