我目前正在开发一个启动器活动(最低 SDK 版本:7),并偶然发现了一个严重的问题。是否有任何有效的方法可以访问/打开默认应用程序(如拨号器、浏览器、短信对话列表、电子邮件客户端、系统设置等),这些应用程序常见于不同的设备(如三星、HTC、索尼、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);
但是当涉及到不同的制造商(如上面提到的那些)时,包名称会有所不同,即在打开摩托罗拉设备的短信客户端的情况下,代码会更改为:
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);