剪贴板经理崩溃(只)在Android 2.X(clipboard manager crash (on

2019-08-03 02:58发布

我才发现,原来这一代码进入崩溃我的应用程序仅适用于Android 2.X

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
clipboard.setText(textView1.getText());

我想...我需要运行之前,增加检查Android版本这种方法,这是正确的代码,允许同时运行在Android 2.x的?

谢谢!

Answer 1:

剪贴板API已经改变了在Android SDK的11水平。 下面是一些代码来处理来自两个版本arinkverma 。

我希望这次能进入支持库一天。


@SuppressWarnings("deprecation")
public void putText(String text){
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES. HONEYCOMB) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE);
        clipboard.setText(text);
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); 
        android.content.ClipData clip = ClipData.newPlainText("simple text",text);
        clipboard.setPrimaryClip(clip);
    }
}

@SuppressWarnings("deprecation")
public String getText(){
    String text = null;
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES. HONEYCOMB ) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE);
        text =  clipboard.getText().toString();
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); 
        text =  clipboard.getText().toString();
    }
    return text;
}


Answer 2:

由于Snicolas给予参考。 我希望这将解决这个问题。 还记得包括API级的图书馆,否则你会得到生成错误。

构建目标已被设定为阿比7至15, 清单文件的优选为10预览

<uses-sdk android:maxsdkversion="15" android:minsdkversion="7" android:targetsdkversion="10"></uses-sdk>


Answer 3:

Snicolas的版本是非常好的。 但是,它是gettext的(else部分)有一个错误。

一个完整的版本是:

@SuppressWarnings("deprecation")
public String getText(Activity a){
    String text = null;
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB ) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) a.getSystemService(Context.CLIPBOARD_SERVICE);
        text =  clipboard.getText().toString();
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) a.getSystemService(Context.CLIPBOARD_SERVICE);
        text = clipboard.getPrimaryClip().getItemAt(0).getText().toString();
    }
    return text;
}


文章来源: clipboard manager crash (only) on android 2.x