2013-06-08 5 views
0

Я использую библиотеку ZXing для своего приложения, и я использую класс this. Но когда я запускаю мое приложение, я имею собственную ошибку на этой линии:java getBytes error

String msg = "123456"; 
byte[] msgBinary = msg.getBytes(Charset.forName("ISO-8859-1")); 

И ошибка ниже:

java: no suitable method found for getBytes(java.nio.charset.Charset) 
    method java.lang.String.getBytes(java.lang.String) is not applicable 
     (actual argument java.nio.charset.Charset cannot be converted to java.lang.String by method invocation conversion) 
    method java.lang.String.getBytes(int,int,byte[],int) is not applicable 
     (actual and formal argument lists differ in length) 
    method java.lang.String.getBytes() is not applicable 
     (actual and formal argument lists differ in length) 

Может кто-нибудь сказать мне, что проблема здесь я проверил, что GetBytes входной parameteres только String (getBytes (кодировка java.lang.String)), но Charset.forName возвращает Charset. В чем проблема?

+3

Метод 'getBytes (Charset)' доступен только с уровня API 9. –

+1

Попробуйте использовать 'getBytes (String)' one, он существует с уровня API 1. Просто позвоните 'getBytes (" ISO-8591-1") '. –

ответ

3

Как отмечают @Code Painters, основная библиотека и приложение для Android написаны в предположении, что Java 6 и Android API уровня 10 (aka Gingerbread/Android 2.3.3). Если вы настроили таргетинг на более раннюю версию Java или Android, это может не сработать. Вы можете либо настроить API 10+ (или не менее 9), либо изменить код, чтобы не использовать методы, которые были добавлены после уровня API, который вы поддерживаете.

(Есть еще несколько удивительных штрихов. Посмотрите, когда в Android были добавлены String.isEmpty() и new IOException(Throwable) - оба стандартных метода Java 6. На самом деле Android начал где-то между Java 5 и 6 и только недавно совместим с стандартной версией Java 6)

+0

Хороший звонок. 'String.isEmpty()' это то, что я пытался использовать с Android 2.2, и его просто не было. В документации было указано, что это должно было быть, но это не так. – hotshot309

Смежные вопросы