从另一个应用程序打开该应用程序时处理登录屏幕

问题描述

我必须从外部应用程序打开我的应用程序的活动“测试”:

  • 如果用户登录,则应用程序应显示登录活动
  • 如果用户登录,则应用程序应直接显示“测试”活动
  • 我想确保我的应用程序将在其任务而不是在调用方应用程序任务中打开,因为我只需要一个应用程序实例。

为此,我已将此活动注册为隐式意图:

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使用singleTask launchMode吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...