随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。
Intent的Component属性要接受一个ComponentName对象,ComponentName对象包含如下几个构造器:
上面构造器本质就是一个,即创建一个ComponentName需要指定包名和类名,这样就可唯一确定一个组件类。下面通过一个简单的实例来演示,代码如下:
FirstActivity
package com.lovo.activity;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.activity_main_btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 创建一个ComponentName对象
// 方式一
// ComponentName comp=new
// ComponentName(MainActivity.this,SecondActivity.class);
// 方式二:第一个参数为当前应用的包名。第二个参数为跳转组件的类路径
ComponentName comp = new ComponentName("com.lovo.activity",
"com.lovo.activity.SecondActivity");
Intent intent = new Intent();
// 为Intent设置Component属性
intent.setComponent(comp);
startActivity(intent);
}
});
}
}
SecondActivity:
package com.lovo.activity;
import android.app.Activity;
import android.content.ComponentName;
import android.os.Bundle;
import android.widget.EditText;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
EditText show = (EditText) findViewById(R.id.second_et);
// 获取该Activity对应的Intent的Component属性
ComponentName comp = getIntent().getComponent();
// 显示ComponentName对象的包名、类名
show.setText("组件包名:" + comp.getPackageName() + "\n组件类名为:"
+ comp.getClassName());
}
}