标签:启动 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。