无法在Android N上创建用于呼叫号码的快捷方式

时间:2017-03-02 22:12:22

标签: android android-7.0-nougat android-shortcut android-shortcutmanager

这是一个代码示例,用于创建调用特定号码的直接快捷方式,该代码适用于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,但这不是我想要的。我正在寻找一种通过快捷方式直接拨打电话的方法。

在权限方面,我在运行时请求了这两个和CALL_PHONE。

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

1 个答案:

答案 0 :(得分:1)

仅仅因为您的应用具有CALL_PHONE权限并不意味着启动器具有该权限:这就是无法创建快捷方式的原因。

您可以创建自己的空活动的快捷方式,然后从该活动中启动ACTION_CALL意图。