Android 从其他应用程序打开应用程序时处理登录屏幕
我必须从外部应用程序打开我的应用程序的活动“测试”:Android 从其他应用程序打开应用程序时处理登录屏幕,android,android-intent,intentfilter,android-developer-api,android-implicit-intent,Android,Android Intent,Intentfilter,Android Developer Api,Android Implicit Intent,我必须从外部应用程序打开我的应用程序的活动“测试”: 如果用户未登录,应用程序应显示登录活动 如果用户已登录,应用程序应直接显示“测试”活动 我想确保我的应用程序将在其任务中打开,而不是在调用方应用程序任务中打开,因为我只需要我的应用程序的一个实例 为此,我已将此活动注册为隐含意图: class ImplicitIntentActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?)
- 如果用户未登录,应用程序应显示登录活动
- 如果用户已登录,应用程序应直接显示“测试”活动
- 我想确保我的应用程序将在其任务中打开,而不是在调用方应用程序任务中打开,因为我只需要我的应用程序的一个实例
class ImplicitIntentActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val action: String? = intent?.action
if (Intent.ACTION_VIEW == action) {
val data: Uri? = intent?.data
val startCategory = Intent(this, OpenFromExternalAppActivity::class.java)
startCategory.putExtra("openProtocol", data.toString());
startCategory.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(startCategory)
}
finish()
}
}
打开OpenFromExternalAppActivity的:
class OpenFromExternalAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val taskRoot = isTaskRoot
if (!taskRoot) {
val lbm = LocalBroadcastManager.getInstance(this@OpenFromExternalAppActivity)
val intent = Intent()
//....
lbm.sendBroadcast(intent)
} else {
val tmp: Class<*> = FirstSplash::class.java
val aaa = Intent(this, tmp)
startActivity(aaa)
}
finish()
}
类OpenFromExternalAppActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
val taskRoot=isTaskRoot
如果(!taskRoot){
val lbm=LocalBroadcastManager.getInstance(this@OpenFromExternalAppActivity)
val intent=intent()
//....
lbm.sendBroadcast(意图)
}否则{
val tmp:Class=FirstSplash::Class.java
val aaa=意图(本,tmp)
星触觉(aaa)
}
完成()
}
}
有更好的办法吗
也许我可以为OpenFromExternalAppActivity使用单任务启动模式