訪問其餘應用程序的Activity

Activity既能夠在進程內(同一個應用程序)訪問,也能夠進程之間進行(跨進程)訪問。若是想在同一個應用程序中訪問Activity,須要指定Context對象和Activity的Class對象,代碼以下:android

Intent intent = new  Intent(this , Test.class );  this

startActivity(intent);code

Activity的跨進程訪問和進程內部訪問有所不一樣。雖然它們都須要Intent對象,但跨進程訪問並不須要指定Context對象和Activity的 Class對象,而須要指定的是要訪問的Activity所對應的Action(一個字符串)。有些Activity還須要指定一個Uri(經過 Intent構造方法的第2個參數指定)。
在Android系統中有不少應用程序提供了能夠跨進程訪問的Activity,例如,下面的代碼能夠直接調用撥打電話的Activity。對象

Intent callIntent = new  Intent(Intent.ACTION_CALL, Uri.parse("tel:12345678" );  進程

startActivity(callIntent);  字符串

 執行上面的代碼後,系統會自動撥號。get

  在調用撥號程序的代碼中使用了一個Intent.ACTION_CALL常量,該常量的定義以下:it

public  static  final  String ACTION_CALL = "android.intent.action.CALL" ;  io

 這個常量是一個字符串常量,也是咱們在這節要介紹的跨進程調用Activity的關鍵。若是在應用程序中要共享某個Activity,須要爲這個 Activity指定一個字符串ID,也就是Action。也能夠將這個Action看作這個Activity的key。在其餘的應用程序中只要經過這個 Action就能夠找到與Action對應的Activity,並經過startActivity方法來啓動這個Activity。class