如何以编程方式打开和显示手机的邮件收件箱..?

时间:2012-01-03 11:57:29

标签: android android-activity sms

当我们点击邮件时,我们会在收件箱中显示。

当我点击我的应用程序按钮时,我想显示相同的窗口。

所以,我想开始收件箱活动。

如何实现这一目标??

提前致谢...!

4 个答案:

答案 0 :(得分:2)

试试这个..完美地工作..!

public void openInbox() {
String application_name = "com.android.mms";
try {
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
List<ResolveInfo> resolveinfo_list = this.getPackageManager()
.queryIntentActivities(intent, 0);

for (ResolveInfo info : resolveinfo_list) {
if (info.activityInfo.packageName
.equalsIgnoreCase(application_name)) {
launchComponent(info.activityInfo.packageName,
info.activityInfo.name);
break;
}
}
} catch (ActivityNotFoundException e) {
Toast.makeText(
this.getApplicationContext(),
"There was a problem loading the application: "
+ application_name, Toast.LENGTH_SHORT).show();
}
}

private void launchComponent(String packageName, String name) {
Intent launch_intent = new Intent("android.intent.action.MAIN");
launch_intent.addCategory("android.intent.category.LAUNCHER");
launch_intent.setComponent(new ComponentName(packageName, name));
launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(launch_intent);
}

答案 1 :(得分:1)

String SMS_MIME_TYPE = "vnd.android-dir/mms-sms";

        Intent defineIntent = new Intent(Intent.ACTION_MAIN);                

        defineIntent.setType(SMS_MIME_TYPE);                

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 , defineIntent, 0);

不确定它是否有效

答案 2 :(得分:1)

短信内容提供商将为您提供所有短信相关数据。您正在谈论的屏幕由制造商使用该数据实施。所以你有两个选择来实现这个目标:

1)使用相关内容提供商返回的光标,创建具有所需外观的自己的屏幕。

2)获取有关不同制造商的消息屏幕的包名称的信息(例如假设三星有com.samsung.smsscreeen)以及此类名称的意图。为要添加的设备编写案例语句。

答案 3 :(得分:0)

我在上面扩展了srinivasa的解决方案,以获取设备上当前正在使用的默认SMS应用程序的软件包名称:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        application_name = Telephony.Sms.getDefaultSmsPackage(this);
    }

我发现这在三星和诺基亚设备上都可以很好地工作,因为三星和诺基亚设备开箱即用都使用不同的短信应用程序。