在我的安卓应用程序中,我碰巧使用下面的代码从TextView中复制文本。
buttonCopy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String copyText;
copyText = textBox2.getText().toString();
myClip = ClipData.newPlainText("text", copyText);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Copied", Toast.LENGTH_SHORT).show();
}
});我为我的应用程序设置的最低API级别是API级别10。
myClip = ClipData.newPlainText("text", copyText);
myClipboard.setPrimaryClip(myClip);需要最低API级别11。
果然,我的应用程序用户正在发送以下报告
java.lang.NoClassDefFoundError: android.content.ClipboardManager
at com.nepali_unicode.nepalityping.MainActivity.onCreate(Unknown Source)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)我想用API级别10支持旧设备。那么,我的问题是如何为这些旧设备启用“复制”按钮?
我会感谢你的帮助。我是个新手。我的PHP编程背景鼓励我学习Android。我参加了Udacity的课程。我在通过做来学习。哦,我碰巧用的是安卓工作室。
发布于 2015-09-24 21:27:21
我是否需要使用完全不同但支持我想要的API级别的单一代码?
您可以使用更简单的android.text.ClipboardManager API,它应该适用于所有API级别。在您的例子中,这只是调用setText()将文本放在剪贴板上。
或者,我可以做些什么,以便使用API 10的设备使用不同的代码复制文本?
您可以使用Build.VERSION.SDK_INT查看您使用的是哪个版本的Android,并执行不同的操作:
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
// do the newer API
}
else {
// do the older API
}在这里的具体例子中,由于您的新代码似乎只做了setText()会做的事情,所以只使用setText()就更简单了。但是,如果您正在利用较新的剪贴板API提供的更详细的功能(例如,提供不同MIME类型的内容的变化,如HTML和纯文本),那么使用上面的if测试可以让您在较新的设备上做一些很酷的事情,并在旧设备上优雅地降级。
https://stackoverflow.com/questions/32771146
复制相似问题