0

다음은 특정 번호를 호출하고 Android M 이하에서 작동하는 바로 가기를 만드는 코드의 예입니다.Android N에서 번호를 호출하기위한 바로 가기를 만들 수 없습니다.

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); 
} 

동일한 코드는 안드로이드 N에 더 이상 작동하지 않습니다, 나는 다음 로그 캣에서 볼 수 있습니다

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

내가 ACTION_DIAL에 ACTION_CALL 변경하면 안드로이드 N에서 작동하지만 그건 아니다 내가 찾고있는 것. 바로 가기를 통해 직접 전화를 걸 수있는 방법을 찾고 있습니다.

사용 권한 측면에서 런타임에이 2가 포함되고 CALL_PHONE이 요청되었습니다. 앱 런처를 의미하지 않는다 CALL_PHONE 권한이 있다고해서

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

'installShortcutGetId()'를 실행하기 전에 허락을 요청 했습니까 – petey

+0

예. @petey – lyc001

답변

1

는 권한이 : 바로 가기를 만들 수없는 이유입니다.

대신 자신의 빈 활동에 대한 바로 가기를 만들어 해당 활동에서 ACTION_CALL 인 텐트를 시작할 수 있습니다.