我正在开发一个Android应用程序,我通过Intents调用Google Translate应用程序。描述here的过程非常有用,但我无法弄清楚为什么我的应用程序崩溃说"没有找到活动来处理Intent"。
提前致谢!
这是我的代码,
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);
}
这就是我的logcat显示的内容
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)
答案 0 :(得分:8)
您需要将HomeActivity
更改为TranslateActivity
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",
//Change is here
//"com.google.android.apps.translate.HomeActivity"));
"com.google.android.apps.translate.TranslateActivity"));
startActivity(intent);
} catch (ActivityNotFoundException e) {
// TODO Auto-generated catch block
Toast.makeText(getApplication(), "Sorry, No Google Translation Installed",
Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:0)
No Activity found to handle Intent
表示没有Intent
与您开始的Intent
匹配,并且您的设备上没有安装Google Translation App
。所以当你开始这个ActivityNotFoundException
时,你最好试试Intent
。
代码在这里:
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可用作付费服务。。检查here。
答案 2 :(得分:-2)
我尝试使用谷歌翻译应用程序的代码,它无法正常工作。 您可能必须使用Translate API这是一项付费服务。