明示的Intentでの起動
明示的Intentで起動させる。
Test1アプリ
import android.app.Activity; 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; import android.widget.TextView; public class Test1Activity extends Activity { /** * 起動時の初期化処理 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.Button01); button.setOnClickListener(new OnClickListener() { /** * ボタン押下処理 * @param arg0 ビュー */ public void onClick(View arg0) { showActivity(); } }); } /** * アクティビティを起動 */ private void showActivity(){ //EditTextから文字列を取得する EditText pkg = (EditText) findViewById(R.id.Text01); EditText activity = (EditText) findViewById(R.id.Text02); String pkgStr = pkg.getText().toString(); String activityStr = pkgStr + "."+ activity.getText().toString(); Intent intent = new Intent(); //起動先の指定 intent.setClassName(pkgStr, activityStr); startActivityForResult(intent, 0); //第一引数:インテント 第二引数:リクエストコード } /** * 起動結果を受け取る * @param requestCode リクエストコード * @param resultCode リザルトコード * @param data インテント */ protected void onActivityResult(int requestCode, int resultCode,Intent data){ super.onActivityResult(requestCode, resultCode, data); String mes = "resultCode : "; if(resultCode == RESULT_OK) { mes += "RESULT_OK"; }else if(resultCode == RESULT_CANCELED){ mes += "RESULT_CANCELED"; }else{ mes += "その他"; } mes += " (int:" + resultCode + ")"; TextView tv = (TextView) findViewById(R.id.TextView01); tv.setText(mes); } }
Test2アプリ
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Test2Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.Button01); button.setOnClickListener(new OnClickListener(){ public void onClick(View v) { if (v == button) { setResult(RESULT_OK); finish(); } }); showResultDialog(); } private void showResultDialog() { AlertDialog.Builder dlg; //AlertDialog alertDialog; dlg = new AlertDialog.Builder(this); dlg.setTitle("Result"); dlg.setMessage("test"); dlg.setNeutralButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); alertDialog = dlg.create(); alertDialog.show(); } private Button button; private AlertDialog alertDialog; private final static int requestCode = 0; }
Test1アプリのテキストボックスにTest2アプリのPackage名とActivity名をいれてやる。
ボタンを押したら、Test1にRESULT_OKを返して終了する。
Test1アプリは受け取ったCODEを表示するという簡単なコードです。
エラー処理は入っていません。