可疑转换为CLIPBOARD_SERVICE的文本:预期的ClipboardManager [ServiceCast]

时间:2017-03-10 12:59:39

标签: android android-studio android-gradle

构建我的应用程序的发布版本时,构建失败并显示以下错误:

错误:错误:可疑转换为CLIPBOARD_SERVICE的文本:预期的ClipboardManager [ServiceCast]

调试版本构建正常。

如果我在下面注释掉SDK 11之前的代码,那么构建正常。

如何解决此错误?

代码:

@TargetApi(11)
@SuppressWarnings("deprecation")
public void btnCopyClicked(View button) {
    if (Build.VERSION.SDK_INT < 11) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        clipboard.setText(aString);
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        android.content.ClipData clip = android.content.ClipData.newPlainText("aString", aString);
        clipboard.setPrimaryClip(clip);
    }
}

环境:

  • Android Studio 2.3
  • Android SDK工具25.3.1
  • Gradle 3.3
  • Android插件版本2.3.0

Project build.gradle:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath 'io.fabric.tools:gradle:1.22.1'
    }
    ...
}

App build.gradle:

android {
    compileSdkVersion 'Google Inc.:Google APIs:21'
    buildToolsVersion '25.0.0'
    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 21
        ...
    }
    ...
}

1 个答案:

答案 0 :(得分:2)

ServiceCastDetector in lint似乎是一个错误。要解决此问题,请转换以下代码

android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(aString);

Object clipboard = getSystemService(Context.CLIPBOARD_SERVICE);
((android.text.ClipboardManager)clipboard).setText(aString);