從一個APP啟動另一個APP的activity的方式
阿新 • • 發佈:2019-01-27
從一個APP啟動另一個APP的Activity的方法
1、通過自定義action啟動
這種方式只需要在程式碼中設定一個action即可, 系統會自動過濾去找到這個action所對應的Activity
當前APP的程式碼
Intent intent = new Intent();
//這裡是採用的自定義action
intent.setAction("transBundle.app");
startActivity(intent);
待啟動APP 的activity在AndroidManifest.xml中的配置
<!- 需要配置對應的自定義action-> <activity android:name=".MyActivity" android:label="@string/app_name" android:exported="true"> <intent-filter> <action android:name="transBundle.app"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
2、通過在Intent中通過指定包名和類名來查詢
直接在當前APP中寫以下程式碼,即可開啟指定APP的activity
ComponentName componetName = new ComponentName( "com.poynt.weibo", //這個是另外一個應用程式的包名 "com.poynt.weibo.ui.IndexActivity"); //這個引數是要啟動的Activity的全路徑名 try { Intent intent = new Intent(); intent.setComponent(componetName); startActivity(intent); } catch (Exception e) { Toast.makeText(getApplicationContext(), "可以在這裡提示使用者沒有找到應用程式,或者是做其他的操作!", 0).show(); }
3、通過scheme啟動
其實這個方法和方法1類似, 只是說增加了scheme引數, scheme更多的用於 在網頁或者H5上來啟動我們的APP, 比如在手機官網上通過scheme可以直接開啟我們的app, 這裡我們只是從APP用scheme啟動另一個APP
當前應用的程式碼:
Uri uri = Uri.parse("app://my.test");
Intent intent = new Intent("transBundle.app", uri);
startActivity(intent);
待開啟APP的AndroidManifest配置
<activity android:name=".MyActivity" android:label="service" android:exported="true"> <intent-filter> <action android:name="transBundle.app"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="app" android:host="my.test"/> </intent-filter> </activity>
其中app類似於http://www.baidu.com中的 http, 表示傳輸協議; my.test類似於www.baidu.com, 表示主機名