0

このコードがAndroid 2.xでのみアプリをクラッシュさせることを発見しました

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

私は思う...このメソッドを実行する前にAndroidバージョンのチェックを追加する必要があります.Android 2.xでも実行を許可する正しいコードはどれですか?

ありがとう!

4

3 に答える 3

6

Clipboard 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;
}
于 2012-11-22T17:50:57.330 に答える
1

参照を提供してくれたSnicolasに感謝します。これで問題が解決することを願っています。また、両方の API レベルのライブラリを含めることを忘れないでください。そうしないと、ビルド時にエラーが発生します。

ビルド ターゲットは Api 7 ~ 15、できれば 10 に設定されています マニフェスト ファイルのプレビュー

<uses-sdk android:maxsdkversion="15" android:minsdkversion="7" android:targetsdkversion="10"></uses-sdk>
于 2012-11-27T03:37:56.507 に答える
1

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;
}
于 2014-09-08T20:10:04.997 に答える