根据应用程序的状态激活飞溅活动或主要活动

问题描述:

我想用我的应用程序从另一个应用程序打开特定文件来处理它。例如,从Gmail应用程序打开邮件中的附件。根据应用程序的状态激活飞溅活动或主要活动

通过以下intent-filter设置,它工作正常。当我打开一个文件时,MainActivity显示并处理它,而不管它是通过另一个应用程序打开还是直接从我的应用程序打开。但是,如果从另一个应用程序打开该文件,我希望从SplashScreen活动开始流程。另一方面,如果应用程序已被激活,直接激活MainActivity。

有谁知道如何解决?

AndroidManifest.xml中

<activity android:name=".SplashScreenActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter>   
</activity> 

<activity android:name=".MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data 
      android:mimeType="*/*" 
      android:scheme="content" /> 
    </intent-filter> 
</activity> 
+0

在您的SplashActivity检查您的条件,并且如果满足该条件,则在调用setContentView()之前直接启动MainActivity。 – Rachit

+0

嗨@Rachit,但如果我想恢复以前的MainActivity状态? – tdchang

+0

以前的状态? – Rachit

你必须从

更换您的活动

<activity android:name=".SplashActivity"> 

而且在SplashActivity得到Action从意图,然后检查行动是否android.intent.action.VIEW然后打开您的MainActivity并将您的文件从SplashActivityMainActivity

就是这样

您不能从清单文件更改启动器活动。您可以在intent-filter中设置多个<category android:name="android.intent.category.LAUNCHER"/>,但您必须设置默认活动。

但是有一个办法可以解决你的问题......

  1. 请与无UI的启动活动,并在onCreate方法条件下打开相应的活动。

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent; 
    if (condition) { 
    intent = new Intent(this, ClassA.class); 
    } else { 
    intent = new Intent(this, ClassB.class); 
    } 
    startActivity(intent); 
    finish(); 
    } 
    

OR

  1. 在的setContentView方法之前的溅活动写入条件。

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent; 
    if (condition) { 
    setContentView(); 
    } else { 
    intent = new Intent(this, ClassB.class); 
    startActivity(intent); 
    finish(); 
    } 
    
    } 
    
  2. 希望这会帮助你。

开始=>