2013-08-18 35 views
2

我在我的活动中有一个按钮和一个编辑文本框,按下按钮,我将edittext中的所有文本复制到剪贴板。在我检查的所有设备中,代码工作正常,除了在Android 2.3.6版本下运行的三星GT-S6802。 我无法找到问题。请帮助。复制粘贴不工作在Android 2.3.6(姜饼)

btn3.setOnClickListener(new View.OnClickListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onClick(View v) { 
       if (edit.getText().length() > 0) { 
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
        clipboard.setText(edit.getText()); 
        Toast.makeText(getApplicationContext(), 
          "Text is Copied Press long to paste anywhere", 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
+0

当代码工作正常,那么最新的问题是什么? – KOTIOS

+0

按下该复印按钮时,该应用程序在Samsung GT-S6802中崩溃。 –

+0

是否可以粘贴logcat? – KOTIOS

回答

5

对于大于HoneyComb的版本,ClipboardManager的包从android.text.ClipboardManager更改为android.content.ClipboardManager。正确的代码如下所示。

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
          if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
           android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
           ClipData clip = ClipData.newPlainText("label", 
             edit.getText()); 
           clipboard.setPrimaryClip(clip); 
          } else { 
           android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
           clipboard.setText(edit.getText()); 
          } 
0

大概类android.content.ClipboardManager是进口的,其中只有从API> = 11的工作原理。由于2.3.6是API 10,应用程序崩溃我猜说java.lang.NoClassDefFoundError

Android clipboard code that works on all API levelsHow to copy text programmatically in my Android app? 的解决方案工作。不过,dalvikvm会报告错误,因为它会尝试验证所有类,但该应用程序不会崩溃。

为了防止加载无法验证的类,请参阅http://android-developers.blogspot.de/2010/07/how-to-have-your-cupcake-and-eat-it-too.html,其中正确版本相关的抽象类在运行时实例化。