一、简介
1.activity显式启动
2.activity隐式启动
二、activity显式启动
(1)不带返回启动
不带返回的启动比较简单,直接new一个Intent,然后调用startActivity,我就不多赘述了,直接上代码
不带返回启动代码示例:
Intent intent=new Intent(AActivity.this,BActivity.class);
startActivity(intent);
(2)带返回的启动
带返回需要重写onActivityResult()方法,启动时要用startActivityForResult()方法,当被启动的 activity被finish()的时候,就会回调onActivityResult()方法把数据带回来。
带返回代码示例:
第一个Activity(布局就一个Button)
//启动一个Activity,传递两个数求和后返回结果
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_SUM=1;//请求码
private static final int RESULT_SUM=2;//结果码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view){
Intent intent=new Intent(this,BActivity.class);
intent.putExtra("a",5);
intent.putExtra("b",6);
startActivityForResult(intent,REQUEST_SUM); //带返回的启动,REQUEST_SUM为请求码
}
public void onActivityResult(int requestCode, int resultCode, Intent data) { //当被调Activityfinish()的时候被调
if(requestCode==REQUEST_SUM&&resultCode==RESULT_SUM)//判断请求码和结果码
{
int c=data.getIntExtra("c",0);
Toast.makeText(getApplicationContext(),c+"",Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
第二个Activity
public class BActivity extends AppCompatActivity {
private static final int RESULT_SUM=2;//结果码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Intent intent=getIntent();//获取传过来的intent
int a=intent.getIntExtra("a",0);//获取数据
int b=intent.getIntExtra("b",0);
int c=a+b;
Intent intent1=new Intent();//新建一个intent,放入数据
intent.putExtra("c",c);
setResult(RESULT_SUM,intent);//放入结果
finish();
}
}
三、隐式启动Activity
隐式启动不需要具体指明打开哪一个Activity,只要满足action、category等条件就可以打开,被打开的Activity需要配置intent-filter、action、category等属性,当不需要填category的时候要把category属性设置为android.intent.category.DEFALULT。
代码示例:
//本次通过隐式启动拨打电话
//注:Android6.0以后有些权限需要动态申请,既要在manifest。xml文件中声明还要在代码中申请
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
// 动态申请打电话的权限
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
}else {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);//设置action
Uri uri = Uri.parse("tel:" + 1354682621);//设置要拨打的电话
intent.setData(uri);
MainActivity.this.startActivity(intent);
}
}
}