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使用单任务启动模式