Google Translate Activity not working anymore

社会主义新天地 提交于 2019-11-30 10:00:36

They have changed it once again:

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

            intent.putExtra(Intent.EXTRA_TEXT, text);

UPDATE: It is possible to pass the languages if you pack the text and the languages into an 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);

UPDATE:

The following code works with the new version of 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"));

As you can see, this is the standard ACTION_SEND with additional parameters "to" and "from".

There's a gotcha: "key_text_input" takes preference over Intent.EXTRA_TEXT, and "to" and "from" work only with "key_text_input".

If you have an impression that no data is passed (at all), maybe it is because you use 3-character language codes instead of 2-character ones. But the codes for Chinese are zh-CN and zh-TW.

My previous post:

The action and the parameter names have changed.

        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"));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!