这是一个代码示例,用于创建调用特定号码的直接快捷方式,该代码适用于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" />
答案 0 :(得分:1)
仅仅因为您的应用具有CALL_PHONE权限并不意味着启动器具有该权限:这就是无法创建快捷方式的原因。
您可以创建自己的空活动的快捷方式,然后从该活动中启动ACTION_CALL
意图。