【问题标题】:Programmatically change the "Use by default for this action"以编程方式更改“默认情况下用于此操作”
【发布时间】:2012-02-06 10:21:17
【问题描述】:

我有普通的“电话”拨号器和新的“拨号器”应用程序。现在,如果我选中“默认使用此操作”并单击“拨号器”应用程序,那么每次按下电话按钮时,“拨号器”应用程序都会自动启动。但是如何在代码中更改呢?

此首选项存储在哪里?

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

例如,Intent.ACTION_CALL 与某些应用程序配对,例如“拨号器”应用程序是每次引发 Intent.ACTION_CALL 时都会启动的默认应用程序...

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

    或类似的东西

    【讨论】:

    • 致命异常:main E/AndroidRuntime(3043): android.content.ActivityNotFoundException: 找不到处理 Intent { act=android.provider.Settings.Applications } 的活动
    • Intent i = new Intent(android.provider.Settings.ACTION_ALL_APPS); startActivity(i);
    • 未找到处理 Intent { act=android.provider.Settings.ACTION_ALL_APPS } 的 Activity 我是否缺少某些权限?你试过这个吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
       @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" ));
              }
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        相关资源
        最近更新 更多