From 02676a60608d5669807e5731fb694d197a10c0a3 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Tue, 22 Jan 2013 16:13:44 +0000 Subject: Android: Fix clipboard operation on older androids. ClipboardManager changed its API at Honeycomb, AnimatorInflater only appeared at Honeycomb. Both of these are used by the clipboard code. Add fallback code to work with the older systems on older devices. --- .../src/com/artifex/mupdfdemo/MuPDFActivity.java | 41 ++++++++++++++-------- android/src/com/artifex/mupdfdemo/PageView.java | 12 +++++-- 2 files changed, 35 insertions(+), 18 deletions(-) (limited to 'android/src') diff --git a/android/src/com/artifex/mupdfdemo/MuPDFActivity.java b/android/src/com/artifex/mupdfdemo/MuPDFActivity.java index 9a8b691f..bfe0e135 100644 --- a/android/src/com/artifex/mupdfdemo/MuPDFActivity.java +++ b/android/src/com/artifex/mupdfdemo/MuPDFActivity.java @@ -554,24 +554,35 @@ public class MuPDFActivity extends Activity mSelecting = false; mTopBarSwitcher.setDisplayedChild(0); mInfoView.setText(copied?"Copied to clipboard":"No text selected"); - AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.info); - set.setTarget(mInfoView); - set.addListener(new Animator.AnimatorListener() { - public void onAnimationStart(Animator animation) { - mInfoView.setVisibility(View.VISIBLE); - } - public void onAnimationRepeat(Animator animation) { - } + int currentApiVersion = android.os.Build.VERSION.SDK_INT; + if (currentApiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) { + AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.info); + set.setTarget(mInfoView); + set.addListener(new Animator.AnimatorListener() { + public void onAnimationStart(Animator animation) { + mInfoView.setVisibility(View.VISIBLE); + } - public void onAnimationEnd(Animator animation) { - mInfoView.setVisibility(View.INVISIBLE); - } + public void onAnimationRepeat(Animator animation) { + } - public void onAnimationCancel(Animator animation) { - } - }); - set.start(); + public void onAnimationEnd(Animator animation) { + mInfoView.setVisibility(View.INVISIBLE); + } + + public void onAnimationCancel(Animator animation) { + } + }); + set.start(); + } else { + mInfoView.setVisibility(View.VISIBLE); + mHandler.postDelayed(new Runnable() { + public void run() { + mInfoView.setVisibility(View.INVISIBLE); + } + }, 500); + } } }); diff --git a/android/src/com/artifex/mupdfdemo/PageView.java b/android/src/com/artifex/mupdfdemo/PageView.java index 8e784b24..b793db3f 100644 --- a/android/src/com/artifex/mupdfdemo/PageView.java +++ b/android/src/com/artifex/mupdfdemo/PageView.java @@ -425,9 +425,15 @@ public abstract class PageView extends ViewGroup { if (text.length() == 0) return false; - ClipboardManager cm = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE); - - cm.setPrimaryClip(ClipData.newPlainText("MuPDF", text)); + int currentApiVersion = android.os.Build.VERSION.SDK_INT; + if (currentApiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) { + android.content.ClipboardManager cm = (android.content.ClipboardManager)mContext.getSystemService(Context.CLIPBOARD_SERVICE); + + cm.setPrimaryClip(ClipData.newPlainText("MuPDF", text)); + } else { + android.text.ClipboardManager cm = (android.text.ClipboardManager)mContext.getSystemService(Context.CLIPBOARD_SERVICE); + cm.setText(text); + } mSelectBox = null; mSearchView.invalidate(); -- cgit v1.2.3