这是一个用于创建直接快捷方式的代码示例,该快捷方式调用特定号码并且适用于 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" />