前言,最近项目要实现跨程序跳转功能,所以翻阅资料后进行总结,希望能帮到一些有该方面问题的朋友。
一,从一个APP跳转到另外一个应用程序的主页面:
Intent intent = new Intent(Intent.ACTION_MAIN); //前提:知道要跳转应用的包名,类名 ComponentName componentName = new ComponentName(“www.guangyao.waimai” ,“www.guangyao.waimai.View.LoginActivity”); intent.setComponent(componentName); startActivity(intent);
二,从一个APP跳转到另外一个应用程序的指定页面:
1,首先你得在对应APP的AndroidManifest中的需要跳转的活动设置:出口为TURE使他暴露,不设置默认为假
<活动 机器人:导出= “真” 机器人:名称= “.View.MainActivity” 机器人:configChanges = “取向|屏幕尺寸| keyboardHidden” 机器人:screenOrientation = “纵向” 机器人:windowSoftInputMode = “stateHidden | adjustPan” > </活动>
2,其次在对应的代码中添加跳转操作:
Intent intent = new Intent(); intent.setClassName(“www.guangyao.waimai” ,“www.guangyao.waimai.View.MainActivity”); startActivity(intent);
3,注意事项,在步骤一完成后需要重新运行一遍需要跳转的应用程序,让暴露代码生效。不然你会怀疑我给了你错误代码。
三,通过网页链接进行跳转(方案协议跳转,QQ和微信已经封掉了这种跳转模式):
1,首先你要知道在Android平台而言,URI主要分三个部分:scheme, authority,path, queryString。其中authority又分为host和port。格式如下:
2,在目标活动中配置过滤条件
<! - 要想在别的App上能成功调起App,必须添加intent过滤器 - > <intent-filter> <! - 协议部分,随便设置 - >
<data android :scheme = “myscheme” /><! - 下面这几行也必须得设置 - > <category android :name = “android.intent .category.DEFAULT” / > <action android :name = “android.intent.action.VIEW” /> <category android :name = “android.intent.category.BROWSABLE” /> </ intent-filter> 3,这是时候你已经可以跳转了通过访问“
myscheme://www.guangyaoxinxi.com:100 / mypath中键= PID?
“这个地址你已经可以跳转到对应的页面,那么如何在对应的页面将URI中的值给取出来呢。
意图意图= 新意图(意图ACTION_VIEW ,。乌里解析(“myscheme://www.guangyaoxinxi.com 100 / mypath中键= PID?” )); startActivity(intent);
4,在对应页面的oncreat方法中使用:
Intent intent = getIntent(); //防止方案为空时应用程序崩溃。 如果(intent.getScheme()== 空){} 否则 { 日志。e(TAG ,“scheme:” + intent.getScheme()); Uri uri = intent.getData(); 日志。e(TAG ,“scheme:” + uri.getScheme()); 日志。e(TAG ,“host:” + uri.getHost()); 日志。e(TAG ,“port:” + uri.getPort()); 日志。e(TAG ,“path:” + uri.getPath()); 日志。e(TAG ,“queryString:” + uri.getQuery()); 日志。e(TAG ,“queryParameter:” + uri.getQueryParameter(“key”)); }