我有一个火灾意图发送电子邮件的代码
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL,
new String[] { to });
i.putExtra(Intent.EXTRA_SUBJECT, subject);
i.putExtra(Intent.EXTRA_TEXT, msg);
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(Start.this,
"There are no email clients installed.",
Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
但是当这个意图被解雇时,我在列表中看到很多项目,如sms app,gmail app,facebook app等等.
如何过滤此功能并仅启用gmail应用(或者只是电子邮件应用)?
前一段时间我创建了这篇文章,我的同事和我找到了两个不同的答案(两者都有效):
第一个解决方案是使用
Intent callIntent = new Intent("android.intent.action.CALL_PRIVILEGED");
这将打开一个新的窗口提供呼叫通过所有可能的方式拨打电话 - 在这种特殊情况下,他们是拨号和Viber和Skype(或后来添加的任何其他方法).
第二个解决方案是明确呼叫Viber并拨打电话号码
Intent viberCallIntent = new Intent("com.viber.voip.action.CALL"); viberCallIntent.setType( "vnd.android.cursor.item/vnd.com.viber.voip.call"); viberCallIntent.setData(Uri.parse("tel:"+ dialNumber)); viberCallIntent.putExtra("external_call",true); viberCallIntent.putExtra("contact_id", - 1L); startActivity(viberCallIntent);
自上次Viber更新(我们昨天注意到)以来,这些方法都不起作用.第一个只是使用Skype打电话,甚至不提供拨号器(!?!),但如果没有安装Skype,那么它将回落到拨号器并拨打电话.第二个崩溃声称没有找到处理Intent的Activity?
知道发生了什么以及如何解决这个问题?
错误日志如下:
01-27 17:35:03.794: E/AndroidRuntime(7738): FATAL EXCEPTION: main
01-27 17:35:03.794: E/AndroidRuntime(7738): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.viber.voip dat=tel:xxxxxxxxx (has extras) }
01-27 17:35:03.794: E/AndroidRuntime(7738): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
01-27 17:35:03.794: E/AndroidRuntime(7738): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1423)
01-27 17:35:03.794: E/AndroidRuntime(7738): at android.app.Activity.startActivityForResult(Activity.java:3388)
01-27 17:35:03.794: E/AndroidRuntime(7738): at android.app.Activity.startActivityForResult(Activity.java:3349)
01-27 17:35:03.794: E/AndroidRuntime(7738): at android.app.Activity.startActivity(Activity.java:3584)
01-27 17:35:03.794: E/AndroidRuntime(7738): …Run Code Online (Sandbox Code Playgroud)