2013-10-02 3 views
2

Я написал программу, которая вызывает приложение Android для Google Переводчика через Intent.ACTION_VIEW. Проблема заключается в том, что вызов приложения Google Translator больше не работает, хотя это было сделано один раз.Google Translate Активность не работает

код идентичен коду Приводимые здесь:

Returning Translated Text from Google Translate Activity

(да, я пытался заменить мой код, этот код, Переводчик Google App ведет себя так, как будто он не получает каких-либо данных.)

В настоящее время я не могу указать текст и два языка. Лучшее, что я могу сделать, это использовать ACTION_SEND, но она игнорирует два языка:

 Intent i = new Intent(); 
     i.setAction(Intent.ACTION_SEND); 
     i.putExtra(Intent.EXTRA_TEXT, "What is going on?"); 
     i.putExtra("key_text_input", "What time is it?"); 
     i.putExtra("key_text_output", ""); 
     i.putExtra("key_language_from", "en"); 
     i.putExtra("key_language_to", "es"); 
     i.putExtra("key_suggest_translation", ""); 
     i.putExtra("key_from_floating_window", false); 
     i.setComponent(new ComponentName("com.google.android.apps.translate", 
      "com.google.android.apps.translate.translation.TranslateActivity")); 

Что на самом деле произошло, когда я побежал этот код был: Переводчик Google спросил меня, хочу ли я переводить с английского языка и переводится как «Что продолжается?" на французский язык.

Итак: как передать языки в приложение Google Translate сейчас?

ответ

1

UPDATE:

Следующий код работает с новой версией Google Translate Application:

 Intent i = new Intent(); 
     i.setAction(Intent.ACTION_SEND); 
     i.putExtra(Intent.EXTRA_TEXT, "What is going on?"); 
     i.putExtra("key_text_input", "Oh my God! What is going on here?"); 
     //i.putExtra("key_text_output", ""); 
     i.putExtra("from", "en"); 
     i.putExtra("to", "zh-CN"); 
     //i.putExtra("key_suggest_translation", ""); 
     //i.putExtra("key_from_floating_window", false); 
     i.setComponent(new ComponentName("com.google.android.apps.translate", 
       "com.google.android.apps.translate.HomeActivity")); 

Как вы можете видеть, это стандартная ACTION_SEND с дополнительными параметрами «в» и «из» ,

Есть вопрос: «key_text_input» предпочитает Intent.EXTRA_TEXT, а «to» и «from» работает только с «key_text_input».

Если у вас возникло впечатление, что данные не передаются (вообще), возможно, это потому, что вы используете 3-символьные коды языков вместо 2-символьных. Но коды для китайцев - zh-CN и zh-TW.

Мой предыдущий пост:

Действие и параметр имена изменились.

 Intent i = new Intent(); 
     i.setAction("com.google.android.apps.translate.action.QUERY"); 
     i.putExtra("key_text_input", "Oh my God! What is going on?"); 
     i.putExtra("key_text_output", ""); 
     i.putExtra("from", "en"); 
     i.putExtra("to", "zh-CN"); 
     i.putExtra("key_suggest_translation", ""); 
     i.putExtra("key_from_floating_window", false); 
     i.setComponent(new ComponentName("com.google.android.apps.translate", 
      "com.google.android.apps.translate.translation.TranslateActivity")); 
7

Они изменили его еще раз:

  intent.setAction(Intent.ACTION_SEND); 
      intent.setType("text/plain"); 
      intent.setPackage("com.google.android.apps.translate"); 

      intent.putExtra(Intent.EXTRA_TEXT, text); 

UPDATE: Это является можно передать языки, если вы упаковать текст и языки в качестве URI:

  intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.setPackage("com.google.android.apps.translate"); 

      Uri uri = new Uri.Builder() 
        .scheme("http") 
        .authority("translate.google.com") 
        .path("/m/translate") 
        .appendQueryParameter("q", "c'est l'meunier Mathurin qui caresse les filles au tic-tac du moulin") 
        .appendQueryParameter("tl", "pl") // target language 
        .appendQueryParameter("sl", "fr") // source language 
        .build(); 
      //intent.setType("text/plain"); //not needed, but possible 
      intent.setData(uri); 
+0

Спасибо .. пробовал все предыдущие решения, и они не работали, это расстраивает, что они продолжают менять API и очень много ks для обновления нас! – Bruce

+0

Единственное решение, которое на самом деле работает, это использование этого uri. – Virusman

+0

Спасибо, что сработало – cuasodayleo

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