Acticity的跨進程訪問,簡單說就是跳轉,用到Intent。
注意:跳轉不需要指定Context對象和Activity的Class對象。而是指定Action,有的需要Uri。
錯誤姿勢:
Intent Intent = new Intent(this,BActivity.class);startActivity(intent);正確姿勢(打電話):
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:110");startActivity(intent);同理,程序調用相機,圖庫,短信,錄音等功能,都可以理解為Activity間的跨進程通信。
以上,是自己編寫的程序,跨進程訪問Android系統程序,下面我們說一下跨進程訪問非Android系統程序。
舉個栗子:A程序訪問B程序。
1.先創建B程序,建立一個新的Activity,暫且叫做OpenActivity,打開清單配置文件manifest,給OpenActivity增加intent-filter:
注意:A程序中,跨進程訪問方法Intent intent = new Intent(action,data)
<action/>標簽對應參數action
<data/>標簽對應參數data。
<activity android:name=".OpenActivity" android:launchMode="singleTop"> <intent-filter> <!--路徑匹配 協議://主機名:端口號/路徑--> <!--content://com.wgl.share:8080/openApp--> <data android:host="com.wgl.share" android:pathPRefix="/openApp" android:scheme="content" /> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>接下來,將B程序安裝到手機。2.再創建A程序,隨意寫一個點擊事件,目的:訪問并打開B程序
參數Intent.ACTION_VIEW,對應B程序中<action/>標簽參數Uri.parse("content://com.wgl.share:8080/openApp"),對應B程序中<action/>標簽
try { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.wgl.share:8080/openApp")); startActivity(intent); } catch (Exception e) { //本地沒有B程序,請先安裝 }安裝A程序,觸發點擊事件,成功訪問B程序。看效果:
新聞熱點
疑難解答