其他应用启动另外一个应用的activity:
方法一
Intent intent = new Intent();
intent.setAction("sec");
intent.setComponent(new ComponentName("com.test","com.test.SecActivity"));
startActivity(intent);
方法二
activity启动模式之singletask细说:
两种情况:(activity A假设是singletask模式,它在应用1中定义)
1 如果应用1想启动 A ,则 A 不会新建task,而是加载到应用1的task中。另外如果 A 启动了其他的activity,则这个activity会加载在 A 的上面,如果A再次被启动,则 A上面的所有activity实例被销毁。
2 如果应用2要启动 A ,则 A 在新的task或则在应用1的task中加载。
测试代码如下:
应用1 :
package com.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestTaskActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("11111", "activity1 "+getTaskId());
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, SecActivity.class);
startActivity(intent);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
Log.d("1111111", "back");
finish();
}
}
下面这个activity是singletask
package com.test;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SecActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout2);
Log.d("2222", "activity2 oncreat "+ getTaskId());
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
IntentFilter mFilter = new IntentFilter("sec");
registerReceiver(mReceiver, mFilter);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d("2222", "activity2 onNewIntent "+ getTaskId());
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, ThirdActivity.class);
startActivity(intent);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
Log.d("2222222", "back");
finish();
unregisterReceiver(mReceiver);
}
private BroadcastReceiver mReceiver = new MyBroadcastReceiver();
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("2222222", "receive intent");
}
}
}
package com.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ThirdActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout3);
Log.d("333333", "activity3 oncreat "+ getTaskId());
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d("333333", "activity3 onNewIntent "+ getTaskId());
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, SecActivity.class);
startActivity(intent);
}
/* (non-Javadoc)
* @see android.app.Activity#onBackPressed()
*/
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
Log.d("333333", "back");
finish();
}
}
应用2的代码:
package com.test1;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import com.test1.*;
public class TestSingleTaskActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("aaaaaaa", "taskid "+ getTaskId());
// TODO Auto-generated method stub
// Intent intent= new Intent(TestSingleTaskActivity.this, SecActivity.class);
Intent intent = new Intent();
intent.setAction("sec");
intent.setComponent(new ComponentName("com.test","com.test.SecActivity"));
startActivity(intent);
// sendBroadcast(intent);
}
});
}
}