方式一(通過Intent喚起):
我們自己的app代碼:
ComponentName componetName = new ComponentName(
"com.lh.jimtrency.webviewdemo",
"com.lh.jimtrency.webviewdemo.MainActivity");
//(另外一個應用程序的包名,要啟動的Activity )
Bundle bundle = new Bundle();
ArrayList strings=new ArrayList<>();
strings.add("18883250894");
strings.add("浮夸的小白菜");
bundle.putStringArrayList("userInfo", strings);
Intent intent = new Intent();
intent.putExtras(bundle);
intent.setComponent(componetName);
startActivity(intent);
PS:com.lh.jimtrency.webviewdemo 為對方的包名
com.lh.jimtrency.webviewdemo.MainActivity 為對方的MainActivity類
上面的代碼就是喚起了對方App的MainActivity類,那對方還需要怎么配置呢?其實,只需要在AndroidManifest.xml中,對的MainActivity配置時,加上這個屬性(exported):
android:name=".MainActivity"
android:exported="true"/>
那對方怎么接受呢?
Bundle bundle=getIntent().getExtras();
if (bundle!=null){
Toast.makeText(this,
bundle.getStringArrayList("userInfo").toString()
,Toast.LENGTH_SHORT).show();
}
方式二(通過Uri喚起app):
其實也很簡單,就是換了一種方式而已。但,讀者,一定要對uri格式有一定連接才行(uri格式詳解:http://www.voidcn.com/article/p-tpjbxlwp-bae.html)。
下面看看,我們端app的代碼怎么寫:
Uri uri = Uri.parse("jimtrency://user.info.detail?password=1");
Intent intent = new Intent("android.jimtrency.schemeurl.activity");
intent.setData(uri);
startActivity(intent);
PS: “android.jimtrency.schemeurl.activity” 為跳轉時的action
“jimtrency” 為Uri的scheme
“user.info.detail” 為authority
那 對方 app怎么接受呢?
Intent intent = getIntent();
if (null != intent) {
Uri uri = intent.getData();
if (uri == null) {
return;
}
String acionData = uri.getQueryParameter("password");
Toast.makeText(this,acionData,Toast.LENGTH_SHORT).show();
}
對方app的AndroidManifest.xml的配置
android:name=".MainActivity">
android:scheme="jimtrency"
android:host="user.uri.activity" />
特別強調:
uri跳轉時 ,action 配置 和 category 配置,一定不能缺。category 配置是固定的。如下:
方法三(簡單粗暴:直接通過包名喚起app):
PackageManager packageManager = getPackageManager();
Intent intent=new Intent();
intent = packageManager.getLaunchIntentForPackage("com.cmcc.jzfpb");
startActivity(intent);
那要是沒有對應的app怎么辦?其實,你可以打卡對應的下載頁面就行.
Intent view = new Intent
("android.intent.action.VIEW",Uri.parse(""));
startActivity(viewIntent);