记录一下:task-->通过点击h5链接,拉起目标app
第一:在清单文件中配置,启动的WeekUpActivity
<activity
<!--要唤起的Activity-->
android:name=".splash.WeekUpActivity"
android:exported="true">
<intent-filter>
<!--可以根据用户的数据类型,打开相应的Activity-->
<action android:name="android.intent.action.VIEW" />
<!--界面可以被隐式调用-->
<category android:name="android.intent.category.DEFAULT" />
<!--界面可以通过浏览器的连接启动-->
<category android:name="android.intent.category.BROWSABLE" />
<!--协议部分,主要是配置scheme和host-->
<data
android:host="jhq"
android:scheme="testclientapp"
android:path="/news"
android:port="8080"> />
</intent-filter>
</activity>
第二:格式:scheme://host:port/path ===》testclientapp://jhp:8080/news
- 1.在手机微信里,通过微信内部浏览器拉起app
- 微信屏蔽了自定义的scheme访问的功能,无法在微信里直接拉起app。
- 只能通过微信自家应用宝配置的链接,示例:[https://a.app.qq.com/o/simple.jsp?pkgname=包名&channel=1002160650427d595942&fromcase=10001] ,应用宝链接能判断出本地是否安装了该包名app,没安装会引导去应用宝下载,本地安装了会直接拉起app。
- 2.在浏览器中(搜狗、百度、qq),通过URL Scheme 拉起app
另总结一下:Android拉起app的方法
//通过包名,打开目的app
private void openThirdApp2(){
Intent intent2 = getPackageManager()
.getLaunchIntentForPackage("包名");
String classNameString = intent2.getComponent().getClassName();//得到app类名
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setComponent(new ComponentName("包名", classNameString));
startActivity(intent);
}
//通过包名,打开目的app
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
private void openThirdApp1(){
PackageManager packageManager = getPackageManager();
Intent intent= packageManager.getLaunchIntentForPackage("包名");
startActivity(intent);
}
//可以拉起---发起app和拉起的app不在同一个栈里
private void openThirdApp3(){//可以拉起---发起app和拉起的app不在同一个栈里
Intent intent = new Intent();
intent.setData(Uri.parse("testclientapp://jhq:8080/news"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
//可以拉起---但在发起app和拉起的app在同一个栈里
private void openSchema(){//可以拉起---但在发起app和拉起的app在同一个栈里
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(Uri.parse("testclientapp://jhq:8080/news"));
startActivity(it);
}
参考:
https://www.sunzn.com/2017/07/18/%E4%BD%BF%E7%94%A8-URL-Scheme-%E5%94%A4%E8%B5%B7%E5%BA%94%E7%94%A8%E6%89%93%E5%BC%80-Activity/ 使用 URL Scheme 唤起应用打开 Activity
https://blog.csdn.net/qq_40028324/article/details/103078599 关于h5唤起App的方式
https://www.cnblogs.com/shadajin/p/5724117.html iOS/Android 浏览器(h5)及微信中唤起本地APP
https://blog.csdn.net/wangzunkuan/article/details/95515175 运用scheme协议唤起外部app
https://blog.csdn.net/weixin_43917449/article/details/103393978 Android 使用scheme唤起app本地打开
https://blog.csdn.net/zhaohuiyan9837/article/details/78429079 android点击链接打开应用对应界面 (在应用杀死状态下,打开对应界面后,返回时为了不回到浏览器界面,可以借助TaskStackBuilder来实现(具体用法请查阅相关文档))
https://www.jianshu.com/p/1439c8bbc34b Android 外部唤起应用跳转指定页面 TaskStackBuilder
https://blog.csdn.net/huaxun66/article/details/78274600 Android应用内跳转Scheme协议