Невозможно создать ярлык для вызова номера на 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
Намерение от этой деятельности.