0
我目前正在致力于启动程序活动(min SDK版本:7),并且偶然发现了一个严重问题。是否有任何高效方法由我可以访问/打开默认应用(如拨号器,浏览器,短信对话列表,电子邮件客户端,系统设置等),这是在不同的设备中找到(像三星,HTC,索尼,LG,摩托罗拉等),但有不同的软件包名称秒。如何在不同设备上访问/打开默认应用程序
我知道,我可以通过调用的意图访问它们,比如我可以打开默认短信客户端像这样:
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);
谢谢史蒂芬,但我不想让我的用户到任何第三方的短信应用程序。我只想将他/她引导至设备提供的默认应用程序(本例中为短信客户端)。 – Sathya 2013-03-14 07:31:06
如果用户没有安装任何第三方应用程序,则隐式意图将引导他/她直接访问该默认系统应用程序。如果用户确实安装了第三方应用程序,则会要求用户做出选择,但我不明白为什么会这么糟糕。为什么作为用户被迫使用默认的系统短信应用程序时,我每天使用不同的系统?无论如何,我想你可以先尝试明确的意图(至少你知道的意图),如果那些不在那里,你可以回到隐含的意图。 – 2013-03-14 07:40:43