Как программно открыть и показать входящие сообщения телефона ..? - PullRequest
1 голос
/ 03 января 2012

Когда мы нажимаем на сообщения, которые отображаются в папке «Входящие».

Я хочу показать то же самое окно, когда нажимаю кнопку моего приложения.

Итак, я хочу запустить папку входящих сообщенийдеятельность.

Как этого добиться ...?

Заранее спасибо ...!

Ответы [ 4 ]

2 голосов
/ 03 января 2012

Попробуйте это .. отлично работает ..!

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 голос
/ 03 января 2012

SMS-провайдер предоставит вам все данные, связанные с SMS. Экран, о котором вы говорите, реализован производителем с использованием этих данных. таким образом, у вас есть два варианта для достижения этой цели:

1) Используйте курсор, возвращенный поставщиком соответствующего контента, и создайте собственный экран с желаемым внешним видом.

2) получить информацию об имени пакета экрана сообщений для различных производителей (например, предположим, что samsung имеет com.samsung.smsscreeen) и намерение lauch для этого имени класса. напишите выписки для устройств, которые вы хотите добавить.

1 голос
/ 03 января 2012
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);

Не уверен, работает ли он или нет

0 голосов
/ 08 октября 2018

Я расширил решение srinivasa, приведенное выше, чтобы получить имя пакета стандартного SMS-приложения, которое в данный момент используется на устройстве:

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

Я обнаружил, что это хорошо работает на устройствах Samsung и Nokia, которые используют разные приложения для SMS из коробки.

...