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);
但是博主运行时候也报错,可能是模拟器的问题!
浙公网安备 33010602011771号