ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安卓从module的Activity跳转到启动启动页Activity踩的坑

2021-05-06 20:54:30  阅读:194  来源: 互联网

标签:启动 Activity module Intent 跳转 scheme


最近遇到了一个问题,想实现注销账号的功能,在子module中的Activity中实现注销账号的功能,然后跳转到登录界面的主代码区的Activity中,在跳转的时候发现了找不到R.layout.MainActivity,无法通过Intent去启动目标Activity。

最后发现了安卓中有一个这样的属性:

<intent-filter>
    <data android:scheme="scheme" android:host="main" android:path="/mainDetail" />
</intent-filter>

通过指定scheme方法可以跳转到目标Activity中,还能携带小数据,非常简单。


对于启动Activity来说需要注意一点,需要用两个筛选来进行过滤,因为不这样做会导致应用图标消失:

<activity
    android:name="com.main.MainActivity"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:theme="@style/TransparentStatusBarTheme">
    
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <data android:scheme="scheme" android:host="main" android:path="/mainDetail" />
        <!--下面这几行也必须得设置-->
        <category android:name="android.intent.category.DEFAULT"/>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.BROWSABLE"/>
    </intent-filter>

</activity>


相当于有两个匹配规则,第一个规则是点击应用启动的,第二个规则是通过scheme和uri来定位启动。


在module的Activity中的用法:

val url = "scheme://main/mainDetail?"你好!我是从module传来的参数"";//这个就是刚刚前面在AndroidManManifest中设置的,问号后面的参数可带可不带,参考intent用法
intent = Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);


标签:启动,Activity,module,Intent,跳转,scheme
来源: https://blog.51cto.com/u_15072644/2757305

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有