【Android】应用偏好设置

您所在的位置:网站首页 安卓设置单个应用的语言 【Android】应用偏好设置

【Android】应用偏好设置

2024-07-10 01:39| 来源: 网络整理| 查看: 265

【Android】应用偏好设置 偏好设置DeepLink注册启动 校验落地页未设置默认落地页已设置默认落地页落地页不存在 学而不思则罔,思而不学则殆

偏好设置

在Android中启动一个Activity(隐式启动),如果落地页>1,那么系统就会弹出选在弹窗,让你选择一个默认的落地页面,如图: 偏好设置弹窗 通过命令 dumpsys查看当前栈顶的Activity:

mResumedActivity: ActivityRecord{4650966 u0 android/com.android.internal.app.ResolverActivity t840}

ResolverActivity这是系统Activity,专门处理偏好设置的页面。当隐式启动没有设置默认偏好的时候就会启动这个页面。

DeepLink

上面的例子中我在两个应用中注册了DeepLink,如下:

注册 启动 //发送DeepLink startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("zy://wxf/love?name=zhangyu&id=5201314"))); 校验落地页

实际在开发中不能这么写,有可能没有落地页,那么就会报错,所以一般需要在启动的时候查询一下Intent是否存在接收方。

未设置默认落地页 PackageManager pm = getPackageManager(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("zy://wxf/love?name=zhangyu&id=5201314")); ResolveInfo resolveInfo = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); Log.d("zhangyu", "resolveInfo:" + resolveInfo);

当我们没有设置偏好设置的时候,返回的是系统设置偏好的页面(ResolverActivity ):

2020-09-04 08:17:08.463 13352-13352/com.example.leakdemo D/zhangyu: resolveInfo:ResolveInfo{33175ae android/com.android.internal.app.ResolverActivity m=0x0} 已设置默认落地页

当我们设置了默认偏好: 在这里插入图片描述 结果如下:

2020-09-04 08:21:24.911 13678-13678/com.example.leakdemo D/zhangyu: resolveInfo:ResolveInfo{7c0b4c8 com.example.myapplication/.MainActivity m=0x508000}

这个是否查询落地页就是目的页了,而不再是偏好设置页; 当然如果想删除这个偏好设置,需在【设置】-【应用管理】-【具体应用】-【默认打开】-【清除默认操作】: 在这里插入图片描述

落地页不存在

设置一个错误的页面: 改成love404,这个协议没有注册

PackageManager pm = getPackageManager(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("zy://wxf/love404?name=zhangyu&id=5201314")); ResolveInfo resolveInfo = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); Log.d("zhangyu", "resolveInfo:" + resolveInfo);

结果如下:返回的resolveInfo:null,这种情况下在项目中一般就需要提示用户,不能直接跳转。

2020-09-04 08:18:45.616 13580-13580/com.example.leakdemo D/zhangyu: resolveInfo:null


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3