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

同じコードは、Android Nにもう動作しません、私はlogcatに次のように見ることができます:

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

私はACTION_DIALにACTION_CALLを変更すると、それはAndroidのN上で動作しますが、それはありません私が探しているもの。ショートカットから直接電話をかける方法を探しています。

私はこれらの2つを含み、実行時に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

あなたのアプリがCALL_PHONE権限を持っているからといって、ランチャーがその権限を持っているという意味ではありません:あなたのショートカットを作成することができない理由です。

代わりに、自分自身の空のアクティビティへのショートカットを作成し、そのアクティビティからACTION_CALLインテントを開始することができます。

関連する問題