先上效果无图无真相
dongtu.gif
方式1:(此方式最为简单,只需要获取包名就可以)
// 通过包名跳转的app
val intent = packageManager.getLaunchIntentForPackage("com.achievo.vipshop")
// 如果intent为空,就没有安装要跳转的app
if (intent != null) {
// 传递参数和Activity和Activity传参数一样
// intent.putExtra("name", "xxxx")
// intent.putExtra("age", "19")
startActivity(intent)
} else {
// 没有安装app应用,可以直接跳转到下载页、也可以提醒一下
Toast.makeText(applicationContext, "赶紧下载安装这个APP吧", Toast.LENGTH_LONG).show()
}
方式2: (需要获取跳转app首页的activity)
import android.content.ComponentName
import android.content.Intent
val intent = Intent()
//第一种方式
val ComponentN = ComponentName("com.achievo.vipshop", "com.achievo.vipshop.homepage.activity.HomeAdvPopActivity")
try {
intent.component = ComponentN
//第二种方式
intent.setClassName("com.achievo.vipshop", "com.achievo.vipshop.homepage.activity.HomeAdvPopActivity");
// intent.putExtra("test", "intent1")
startActivity(intent)
} catch (e: Exception) {
//TODO 这里提示用户没有安装应用或找不到指定Activity,或者做其他操作
Toast.makeText(this, "未安装", Toast.LENGTH_SHORT).show()
}
这两种方式的优缺点
第一种:只需要包名就可以打开指定app,相对简单方便获取包名也不是啥难事
第二种:需要在获取包名之后,在获取首页的activity,相对比较麻烦,但是这种方式打开是在当前项目中开辟新线程来加载你所要打开的app,会在打开之后出现两个app,可单独操作,不会同步想要同是在一个app一个账号中操作多个东西可以使用这种方式
最后说下想要获取其他app的首页activity可以自行百度,如找不到也可以联系我QQ:506907778