【问题标题】:How to make a customizable button to launch applications?如何制作可自定义的按钮来启动应用程序?
【发布时间】:2011-05-20 08:47:54
【问题描述】:

我正在尝试向我的应用程序添加一个按钮。单击时,我想启动一个显示所有快捷方式或已安装​​应用程序的选择对话框。选择一个应该永久设置按钮以启动该应用程序。

我了解如何使用 packagemanager 获取已安装应用程序的列表:

PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

但我真的需要接受这个并使用 ListAdapter 并从头开始创建一个单独的对话框吗?

我觉得我在其他应用程序中多次看到此选择菜单(例如,当您添加快捷方式时,任何启动器应用程序,或者当您添加新快捷方式时在 Google 的 Car Home 应用程序中)。有没有常用的方法来使用这个快捷选择菜单?

我已经搜索了这些论坛,但找不到其他的。任何帮助都感激不尽。谢谢。

【问题讨论】:

    标签: android menu selection shortcut package-managers


    【解决方案1】:

    但我真的需要接受这个并使用 ListAdapter 并从头开始创建一个单独的对话框吗?

    选择一个应用程序,是的。

    没有常用的方法来使用这个快捷选择菜单吗?

    “快捷方式选择菜单”没有选择应用程序。它正在选择一个活动,可能使用ACTION_PICK_ACTIVITY

    【讨论】:

      【解决方案2】:

      对于那些感兴趣的人,这是我最终完成它的方式:

      当您创建 Intent mainIntent(在下面的代码中)并使用 ACTION_MAIN 和 addCategory CATEGORY_LAUNCHER 时,您可以将其添加为 pickIntent 的 EXTRA。这样做会缩小选择器菜单的范围,只显示已安装的应用程序。

      这里有一些代码可以启动一个简单的启动器按钮:

      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
      
          //rename R.id.plusbutton to match up with your button in xml
          Button plusButton = (Button)findViewById(R.id.plusbutton);
      
          plusButton.setOnClickListener(new View.OnClickListener() {          
      
          @Override
          public void onClick(View view) {
              Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
              mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);            
              Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
              pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);   
              int requestCode = 1;
              //rename Main to your class or activity
              Main.this.startActivityForResult(pickIntent, requestCode);
              }
          });
      }
      
      protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
          if (intent != null)
              startActivity(intent);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        相关资源
        最近更新 更多