Невозможно создать ярлык для вызова номера на Android N

Это пример кода для создания прямого ярлыка, который вызывает определенный номер и который работает на Android M и ниже.

public void installShortcutGetId(){
    Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"MyCallShortcut");
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_CALL, Uri.parse("tel:77777777")));
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, android.R.drawable.sym_def_app_icon));
    context.sendBroadcast(intent);
}

Тот же код больше не работает на Android N, я вижу в logcat следующее:

 /com.android.launcher3 E/InstallShortcutReceiver: Ignoring malicious intent tel:77777777#Intent;action=android.intent.action.CALL;end

Если я изменю ACTION_CALL на ACTION_DIAL, он будет работать на Android N, но это не то, что я ищу. Я ищу способ сделать прямой звонок через ярлык.

С точки зрения разрешений, у меня есть эти 2 включены и CALL_PHONE запрашивается во время выполнения.

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.CALL_PHONE" />

1 ответ

То, что ваше приложение имеет разрешение CALL_PHONE, не означает, что у средства запуска есть это разрешение: именно поэтому ваш ярлык не может быть создан.

Вместо этого вы можете создать ярлык для собственной пустой деятельности и запустить ACTION_CALL Намерение от этой деятельности.

Другие вопросы по тегам