Java 在android中通过意向访问谷歌翻译应用程序

Java 在android中通过意向访问谷歌翻译应用程序,java,android,android-intent,android-logcat,google-translate,Java,Android,Android Intent,Android Logcat,Google Translate,我正在开发一个Android应用程序,通过Intent调用Google Translate应用程序。所描述的过程确实很有帮助,但我无法理解为什么我的应用程序崩溃,因为没有找到处理意图的活动 提前谢谢 这是我的密码 public void translate() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, "h

我正在开发一个Android应用程序,通过Intent调用Google Translate应用程序。所描述的过程确实很有帮助,但我无法理解为什么我的应用程序崩溃,因为没有找到处理意图的活动

提前谢谢

这是我的密码

public void translate()
{
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT, "hello");
    intent.putExtra("key_text_input", "hello");
    intent.putExtra("key_text_output", "");
    intent.putExtra("key_language_from", "en");
    intent.putExtra("key_language_to", "mal");
    intent.putExtra("key_suggest_translation", "");
    intent.putExtra("key_from_floating_window", false);
            new ComponentName(
                "com.google.android.apps.translate",
                "com.google.android.apps.translate.HomeActivity");
    startActivity(intent);

}
这就是我的日志显示的

04-20 07:29:01.647: E/AndroidRuntime(31465): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND flg=0x1 (has clip) (has extras) }
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1423)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Activity.startActivityForResult(Activity.java:3388)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Activity.startActivityForResult(Activity.java:3349)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Activity.startActivity(Activity.java:3584)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.Activity.startActivity(Activity.java:3552)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at com.example.arch.vaani.ocr.FinalActivity.translate(FinalActivity.java:122)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at com.example.arch.vaani.ocr.FinalActivity$1.onClick(FinalActivity.java:101)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.view.View.performClick(View.java:4212)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.view.View$PerformClick.run(View.java:17476)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.os.Handler.handleCallback(Handler.java:800)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.os.Handler.dispatchMessage(Handler.java:100)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.os.Looper.loop(Looper.java:194)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at android.app.ActivityThread.main(ActivityThread.java:5371)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at java.lang.reflect.Method.invokeNative(Native Method)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at java.lang.reflect.Method.invoke(Method.java:525)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-20 07:29:01.647: E/AndroidRuntime(31465):    at dalvik.system.NativeStart.main(Native Method)
找不到处理意图的活动意味着没有与您启动的意图匹配的意图,并且您的设备上没有安装Google Translation应用程序。因此,在这样的场景中,当您启动此意图时,最好尝试捕获ActivityNotFoundException。 代码如下:

try {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT, "hello");
    intent.putExtra("key_text_input", "hello");
    intent.putExtra("key_text_output", "");
    intent.putExtra("key_language_from", "en");
    intent.putExtra("key_language_to", "mal");
    intent.putExtra("key_suggest_translation", "");
    intent.putExtra("key_from_floating_window", false);
    intent.setComponent(new ComponentName(
            "com.google.android.apps.translate",
            "com.google.android.apps.translate.HomeActivity"));
    startActivity(intent);
} catch (ActivityNotFoundException e) {
        // TODO Auto-generated catch block
        Toast.makeText(getApplication(), "Sorry, No Google Translation Installed",
                Toast.LENGTH_SHORT).show();
}
最后,Google Translate API作为付费服务提供。。检查。

没有找到处理意图的活动意味着没有与您启动的意图匹配的意图,并且您的设备上没有安装谷歌翻译应用程序。因此,在这样的场景中,当您启动此意图时,最好尝试捕获ActivityNotFoundException。 代码如下:

try {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT, "hello");
    intent.putExtra("key_text_input", "hello");
    intent.putExtra("key_text_output", "");
    intent.putExtra("key_language_from", "en");
    intent.putExtra("key_language_to", "mal");
    intent.putExtra("key_suggest_translation", "");
    intent.putExtra("key_from_floating_window", false);
    intent.setComponent(new ComponentName(
            "com.google.android.apps.translate",
            "com.google.android.apps.translate.HomeActivity"));
    startActivity(intent);
} catch (ActivityNotFoundException e) {
        // TODO Auto-generated catch block
        Toast.makeText(getApplication(), "Sorry, No Google Translation Installed",
                Toast.LENGTH_SHORT).show();
}

最后,Google Translate API作为付费服务提供。。检查。

我用谷歌翻译应用程序尝试了代码,但它不起作用。
您可能必须使用付费服务。

我在谷歌翻译应用程序中尝试了该代码,但它不起作用。 您可能必须使用付费服务。

您需要将HomeActivity更改为TranslateActivity

您需要将HomeActivity更改为TranslateActivity



您在哪里调用intent.setComponent?检查您的设备中是否安装了Google Translate?请遵循以下步骤。它起作用了。@OP在这里查看答案-如果您想使用google的弹出翻译片段,这个答案对我来说非常有用:where u calling intent.setComponent?检查您的设备中是否安装了google Translate?按照下面的说明操作。成功了。@OP在这里查看答案-如果你想使用谷歌的弹出翻译片段,这个答案对我来说非常有效:我认为即使你安装了翻译应用程序,翻译应用程序也无法正常工作。trusted intent.setComponentnew ComponentName com.google.android.apps.Translate,com.google.android.apps.translate.HomeActivity;?你甚至没有在你的意图上设置组件名。我也试过了。和旧的包名。不工作。你试过了吗?如果这些代码仍然不起作用,我想你必须重新阅读它的API。我认为这是有意的,谷歌希望API的用户使用付费服务;请参阅我发布的对此问题的回答中的链接。我认为即使安装了Translate应用程序,Translate应用程序也无法正常工作。trusted intent.setComponentnew ComponentName com.google.android.apps.Translate,com.google.android.apps.Translate.HomeActivity;?你甚至没有在你的意图上设置组件名。我也试过了。和旧的包名。不工作。你试过了吗?如果这些代码仍然不起作用,我想你必须重新阅读它的API。我认为这是有意的,谷歌希望API的用户使用付费服务;请参阅我在这个问题上的链接。@ Chaythanya NAIR考虑将下面的答案改为下面一个,因为基本上,您的代码中唯一错误的是活动名称。翻译应用程序现在如预期的那样工作,上面链接答案的代码片段^ ^ Chaythanya NAIR考虑更改接受。回答下面的问题,因为基本上你的代码唯一错误的地方就是活动名称。翻译应用程序现在正在使用上面链接的答案中的代码片段按预期工作^