剪贴板:主程序
资源文件strings.xml:
package demo.my.com.myapidemo.content;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import demo.my.com.myapidemo.R;
/**
* Created by Hack on 2015/10/10.
*/
public class ClipboardSample extends Activity {
ClipboardManager mClipboard;
Spinner mSpinner;
TextView mMimeTypes;
TextView mDataText;
CharSequence mStyledText;
String mPlainText;
String mHtmlText;
String mHtmlPlainText;
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
= new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
updateClipData(true);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
setContentView(R.layout.clipboard);
TextView tv;
mStyledText = getText(R.string.styled_text);
tv = (TextView)findViewById(R.id.styled_text);
tv.setText(mStyledText);
mPlainText = mStyledText.toString();
tv = (TextView)findViewById(R.id.plain_text);
tv.setText(mPlainText);
mSpinner = (Spinner) findViewById(R.id.clip_type);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this,R.array.clip_data_types, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
mSpinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(
AdapterView<?> parent, View view, int position, long id) {
updateClipData(false);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);
mDataText = (TextView)findViewById(R.id.clip_text);
mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
updateClipData(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
}
public void pasteStyledText(View button) {
mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText));
}
public void pastePlainText(View button) {
mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));
}
public void pasteHtmlText(View button) {
mClipboard.setPrimaryClip(ClipData.newHtmlText("HTML Text", mHtmlPlainText, mHtmlText));
}
public void pasteIntent(View button) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));
}
public void pasteUri(View button) {
mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));
}
void updateClipData(boolean updateType) {
ClipData clip = mClipboard.getPrimaryClip();
String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null;
if (mimeTypes != null) {
mMimeTypes.setText("");
for (int i=0; i<mimeTypes.length; i++) {
if (i > 0) {
mMimeTypes.append("\n");
}
mMimeTypes.append(mimeTypes[i]);
}
} else {
mMimeTypes.setText("NULL");
}
if (updateType) {
if (clip != null) {
ClipData.Item item = clip.getItemAt(0);
if (item.getText() != null) {
mSpinner.setSelection(1);
} else if (item.getIntent() != null) {
mSpinner.setSelection(3);
} else if (item.getUri() != null) {
mSpinner.setSelection(4);
} else {
mSpinner.setSelection(0);
}
} else {
mSpinner.setSelection(0);
}
}
if (clip != null) {
ClipData.Item item = clip.getItemAt(0);
switch (mSpinner.getSelectedItemPosition()) {
case 0:
mDataText.setText("(No data)");
break;
case 1:
mDataText.setText(item.getText());
break;
case 2:
mDataText.setText(item.getHtmlText());
break;
case 3:
mDataText.setText(item.getIntent().toUri(0));
break;
case 4:
mDataText.setText(item.getUri().toString());
break;
case 5:
mDataText.setText(item.coerceToText(this));
break;
case 6:
mDataText.setText(item.coerceToStyledText(this));
break;
case 7:
mDataText.setText(item.coerceToHtmlText(this));
break;
default:
mDataText.setText("Unknown option: " + mSpinner.getSelectedItemPosition());
break;
}
} else {
mDataText.setText("(NULL clip)");
}
mDataText.setMovementMethod(LinkMovementMethod.getInstance());
}
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 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.
-->
<!--
Demonstrates clipboard.
See corresponding Java code:
com.example.android.apis.content.ClipboardSample
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:id="@+id/copy_styled_text"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="pasteStyledText"
android:text="@string/copy_text" />
<TextView
android:id="@+id/styled_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:id="@+id/copy_plain_text"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="pastePlainText"
android:text="@string/copy_text" />
<TextView
android:id="@+id/plain_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:id="@+id/copy_intent"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="pasteIntent"
android:text="@string/copy_intent" />
<Button android:id="@+id/copy_uri"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="pasteUri"
android:text="@string/copy_uri" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Data type: " />
<Spinner android:id="@+id/clip_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:prompt="@string/clip_type_prompt"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MIME types: " />
<TextView
android:id="@+id/clip_mime_types"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#ff303030"
android:padding="4dp"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Data content:" />
<TextView
android:id="@+id/clip_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff303030"
android:padding="4dp"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
</ScrollView>
资源文件strings.xml:
<string name="activity_clipboard">Content/Clipboard/Data Types</string>
<string name="copy_text">Copy Text</string>
<string name="copy_intent">Copy Intent</string>
<string name="copy_uri">Copy URI</string>
<string name="clip_type_prompt">Clip Type</string>
arrays.xml
<!-- Used in content/ClipboardSample.java -->
<string-array name="clip_data_types">
<item>No data in clipboard</item>
<item>Text clip</item>
<item>HTML Text clip</item>
<item>Intent clip</item>
<item>Uri clip</item>
<item>Coerce to text</item>
<item>Coerce to styled text</item>
<item>Coerce to HTML text</item>
</string-array>