如何在不同设备中访问/打开默认应用程序

时间:2013-03-14 07:01:24

标签: android

我目前正在开发启动器活动(最低版本的SDK版本:7),并偶然发现了一个严重的问题。是否有高效方法可以访问/打开默认应用(如拨号器,浏览器,短信对话列表,电子邮件客户端,系统设置等),常见于不同设备(如 三星 HTC Sony LG Motorola 等),但包名不同。

我知道我可以通过调用意图来访问它们,例如我可以像这样打开 默认SMS客户端

Intent intent = new Intent("android.intent.action.MAIN");
                intent.setComponent(new ComponentName("com.android.mms","com.android.mms.ui.ConversationList"));
                startActivity(intent);

但是,对于不同的制造商(如上面提到的那些),包装名称有所不同 即在打开motorola设备的 sms客户端 的情况下,代码会发生变化:

Intent moto_intent = new Intent("android.intent.action.MAIN");
                intent.setComponent(new ComponentName("com.motorola.blur.conversations","com.motorola.blur.conversations.ui.ConversationList"));
                startActivity(moto_intent);

1 个答案:

答案 0 :(得分:0)

使用implicit意图(而不是明确意图)。

在您的情况下,您使用ACTION_SEND意图

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("address", "5551234567");
intent.putExtra("sms_body", "Hi mom");
// intent.putExtra(Intent.EXTRA_STREAM, imageUri);          
// intent.setType("image/jpeg");
startActivity(intent);

此方法也适用于喜欢使用自己的第三方SMS应用程序的用户。