Intent由Action(动作),Data(数据),Category(分类),Type(类型),Component(组件)和Exra组成,通过这些便可以启动其他组件并传递信息。Intent类负责管理这些数据,并提供了Intent的所有方法。

1.setComponent方法:主要用于在不同包不同应用程序间传递Intent

    工程中有两个包com.example.demointentcomponentname和com.demo.two。

    com.example.demointentcomponentname中新建一个MainActivity

    代码:

package com.example.demointentcomponentname;

import android.os.Bundle;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt = (Button)findViewById(R.id.bt);
        bt.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ComponentName componentName = new ComponentName(MainActivity.this,"com.demo.two.FirstActivity");
                Intent intent = new Intent();
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    
    <Button
        android:id="@+id/bt" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="button"/>

</RelativeLayout>

 

   com.demo.two中有一个FirsAcitivity

package com.demo.two;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import com.example.demointentcomponentname.*;

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
    }

    

}

xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FirstActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

</RelativeLayout>

博主看过有人说setComponent可以启动第三方程序的代码

具体转载:

  

Intent intent = new Intent();
ComponentName comp = new ComponentName("com.tencent.android.pad",
        "com.tencent.android.pad.paranoid.desktop.DesktopActivity");
intent.setComponent(comp);
intent.setAction("android.intent.action.MAIN");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);    

(博主试过了,上面是可以的)

因为博主只用了模拟器,运行会报错,博主知识有限,希望运行成功的给个回复!

博主也看过setComponent可以动系统程序(本例子为日历程序)

具体代码:

Intent intent=new Intent();   
intent.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.LaunchActivity"));   
startActivity(intent); 

但是博主运行时候也报错,可能是模拟器的问题!

 

 

posted on 2012-12-26 16:20  merryjd  阅读(253)  评论(0编辑  收藏  举报