0

我正在开发一个Android应用程序,我通过Intents调用谷歌翻译应用程序。描述的程序here真的很有帮助,但我无法弄清楚为什么我的应用程序崩溃,说“找不到处理意图的活动”。通过Android的意图访问谷歌翻译应用程序

在此先感谢!

这里是我的代码,

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

? –

+0

检查您的设备是否安装了Google翻译? – TheLittleNaruto

+0

请按照此http://stackoverflow.com/a/20321335/1983018。有效。 – cuasodayleo

回答

0

我试着用谷歌翻译应用程序的代码,它不工作。 您可能必须使用付费服务Translate API

0

No Activity found to handle Intent意味着没有Intent匹配Intent你开始没有Google Translation App安装在设备上。所以当你开始这个Intent这样的场景时,你最好试试赶上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(); 
} 

最后,谷歌翻译API可作为一种有偿服务。。检查here

+0

即使安装了应用程序,我也不认为翻译应用程序仍在工作。 –

+0

已尝试'intent.setComponent(new ComponentName( “com.google.android.apps.translate”, “com.google.android.apps.translate.HomeActivity”));'?你甚至没有在你的'Intent'上设置'ComponentName'。 – SilentKnight

+0

我也试过。和旧包名。不工作。你试过了吗? –

2

你需要其中u呼吁`intent.setComponent`改变HomeActivityTranslateActivity

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(); 
} 
+0

很好,它的工作原理 – user924