Java 使用意图启动活动时出现问题

Java 使用意图启动活动时出现问题,java,android,class,android-intent,Java,Android,Class,Android Intent,我对如何使函数正常工作感到沮丧。 我一直在研究和环顾四周 一开始我认为我是对的,但我错了,对我的意思有一些概述。 我制作了一个有6个按钮的应用程序,所有这些按钮都可以打开不同的应用程序 时钟,2点。日历,3。浏览器,4。信息,5。电话,和6。联系人 这是我启动contacts应用程序的onClick方法 // Contacts Launch Button contacts_launch = (Button) findViewById(R.id.contacts_launch); contact

我对如何使函数正常工作感到沮丧。 我一直在研究和环顾四周

一开始我认为我是对的,但我错了,对我的意思有一些概述。 我制作了一个有6个按钮的应用程序,所有这些按钮都可以打开不同的应用程序

  • 时钟,2点。日历,3。浏览器,4。信息,5。电话,和6。联系人
  • 这是我启动contacts应用程序的onClick方法

    // Contacts Launch
    Button contacts_launch = (Button) findViewById(R.id.contacts_launch); 
    contacts_launch.setOnClickListener(new View.OnClickListener() { 
    
     @Override
     public void onClick(View v) {
           Intent intent_contacts = new Intent(Intent.ACTION_MAIN);
           intent_contacts.addCategory(Intent.CATEGORY_LAUNCHER);
           startActivity(intent_contacts);
      }
    });
    
    onClick Intent方法对于我的所有按钮都是相同的,只是Intent名称已根据应用程序名称更改,就像消息传递是Intent\u消息一样

    当启动应用程序时,当我点击按钮时。它提示我一个窗口,我可以选择应用程序。每次我选择按钮时,它都会运行应用程序

    但当我选择另一个应用程序时,它会启动联系人应用程序?别让我像以前那样选择它。我怎样才能解决这个问题?我很确定我使用的intent函数是错误的

    谢谢你抽出时间


    请再次检查代码,这是我修改的一个不起作用的代码,它只有一个意图方法。我在允许我选择的地方添加了我最初使用的代码。这是一个与意图和类别。(您现在可以看到的)

    您好使用以下代码打开联系人:

     @SuppressWarnings("deprecation")
     Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
     startActivity(intent);
    

    Hi使用以下代码打开联系人:

     @SuppressWarnings("deprecation")
     Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
     startActivity(intent);
    
    这是打开消息应用程序或挂断的示例代码。你也可以为别人这样做


    这是打开消息应用程序或挂断的示例代码。您也可以对其他人这样做。

    如果您不想反复选择活动(如使用createChooser时),请尝试以下操作:

    public class Chooser extends Activity implements OnClickListener {
        private static final int NUM = 6;
        private static final CharSequence DEFAULT = "click for select the app, long click to clear it";
    
        private Intent[] mIntents = new Intent[NUM];
        private LinearLayout mLayout;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mLayout = new LinearLayout(this);
            mLayout.setOrientation(LinearLayout.VERTICAL);
            for (int i = 0; i < NUM; i++) {
                Button b = new Button(this);
                b.setTag(i);
                b.setText(DEFAULT);
                b.setOnClickListener(this);
                registerForContextMenu(b);
                mLayout.addView(b);
            }
            setContentView(mLayout);
        }
    
        private CharSequence getName(Intent intent) {
            PackageManager mgr = getPackageManager();
            ResolveInfo info = mgr.resolveActivity(intent, 0);
            if (info != null) {
                return info.loadLabel(mgr);
            }
            return intent.getComponent().getShortClassName();
        }
    
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            int itemId = (Integer) v.getTag();
            if (mIntents[itemId] != null) {
                menu.add(Menu.NONE, itemId, Menu.NONE, "Clear");
            }
        }
    
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            int i = item.getItemId();
            Button b = (Button) mLayout.getChildAt(i);
            b.setText(DEFAULT);
            mIntents[i] = null;
            return super.onContextItemSelected(item);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode == RESULT_OK) {
                Button b = (Button) mLayout.getChildAt(requestCode);
                b.setText(getName(data));
                mIntents[requestCode] = data;
                startActivity(data);
            }
        }
    
        @Override
        public void onClick(View v) {
            int i = (Integer) v.getTag();
            if (mIntents[i] == null) {
                Intent intent = new Intent(Intent.ACTION_PICK_ACTIVITY);
                Intent filter = new Intent(Intent.ACTION_MAIN);
                filter.addCategory(Intent.CATEGORY_LAUNCHER);
                intent.putExtra(Intent.EXTRA_INTENT, filter);
                startActivityForResult(intent, i);
            } else {
                startActivity(mIntents[i]);
            }
        }
    }
    
    公共类选择器扩展活动实现OnClickListener{
    私有静态final int NUM=6;
    private static final CharSequence DEFAULT=“单击以选择应用程序,长时间单击以清除它”;
    私有意图[]minents=新意图[NUM];
    私人线路布局;
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    mLayout=新的线性布局(本);
    mLayout.设置方向(LinearLayout.垂直);
    for(int i=0;i
    如果不想反复选择活动(如使用createChooser时),请尝试以下操作:

    public class Chooser extends Activity implements OnClickListener {
        private static final int NUM = 6;
        private static final CharSequence DEFAULT = "click for select the app, long click to clear it";
    
        private Intent[] mIntents = new Intent[NUM];
        private LinearLayout mLayout;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mLayout = new LinearLayout(this);
            mLayout.setOrientation(LinearLayout.VERTICAL);
            for (int i = 0; i < NUM; i++) {
                Button b = new Button(this);
                b.setTag(i);
                b.setText(DEFAULT);
                b.setOnClickListener(this);
                registerForContextMenu(b);
                mLayout.addView(b);
            }
            setContentView(mLayout);
        }
    
        private CharSequence getName(Intent intent) {
            PackageManager mgr = getPackageManager();
            ResolveInfo info = mgr.resolveActivity(intent, 0);
            if (info != null) {
                return info.loadLabel(mgr);
            }
            return intent.getComponent().getShortClassName();
        }
    
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            int itemId = (Integer) v.getTag();
            if (mIntents[itemId] != null) {
                menu.add(Menu.NONE, itemId, Menu.NONE, "Clear");
            }
        }
    
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            int i = item.getItemId();
            Button b = (Button) mLayout.getChildAt(i);
            b.setText(DEFAULT);
            mIntents[i] = null;
            return super.onContextItemSelected(item);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode == RESULT_OK) {
                Button b = (Button) mLayout.getChildAt(requestCode);
                b.setText(getName(data));
                mIntents[requestCode] = data;
                startActivity(data);
            }
        }
    
        @Override
        public void onClick(View v) {
            int i = (Integer) v.getTag();
            if (mIntents[i] == null) {
                Intent intent = new Intent(Intent.ACTION_PICK_ACTIVITY);
                Intent filter = new Intent(Intent.ACTION_MAIN);
                filter.addCategory(Intent.CATEGORY_LAUNCHER);
                intent.putExtra(Intent.EXTRA_INTENT, filter);
                startActivityForResult(intent, i);
            } else {
                startActivity(mIntents[i]);
            }
        }
    }
    
    公共类选择器扩展活动实现OnClickListener{
    私有静态final int NUM=6;
    private static final CharSequence DEFAULT=“单击以选择应用程序,长时间单击以清除它”;
    私有意图[]minents=新意图[NUM];
    私人线路布局;
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    mLayout=新的线性布局(本);
    mLayout.设置方向(LinearLayout.垂直);
    for(int i=0;i