以编程方式更改“此操作的默认使用”

时间:2012-02-06 10:21:18

标签: android

我有正常的电话'拨号器和我有新的拨号器'应用程序。现在,如果我检查"默认使用此操作"并点击“拨号器”'应用程序然后每当我按下电话按钮时,拨号器'应用程序将自动启动。但是如何在代码中更改此内容?

存储此偏好的位置?

这是如何映射的?这是由android动作意图字符串映射的吗?

例如,Intent.ACTION_CALL与某些应用程序配对,例如' Dialer'应用程序是每次Intent.ACTION_CALL被引发时将启动的默认应用程序...

由于

enter image description here

3 个答案:

答案 0 :(得分:0)

您无法使用应用更改默认应用程序 但您可以通过意图引用应用程序的设置页面来设置默认值

Intent i = new Intent(android.provider.Settings.Aplications);
startActivity(i);

或类似的东西

答案 1 :(得分:0)

从API 21开始,您可以使用下一个意图来要求用户成为默认拨号程序:

    Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER)
        .putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
    if (intent.resolveActivity(getPackageManager()) != null) {
      startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER);
    } else {
      Log.w(getLocalClassName(), "No Intent available to handle action");
    }

enter image description here

答案 2 :(得分:0)

 @RequiresApi(api = Build.VERSION_CODES.M)
    private void chnagedialer() {
        TelecomManager systemService = this.getSystemService(TelecomManager.class);
        if (systemService != null && !systemService.getDefaultDialerPackage().equals("com.android.contacts")) {
            startActivity((new Intent(ACTION_CHANGE_DEFAULT_DIALER)).putExtra(EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,"com.android.contacts" ));
        }

    }