根据应用

时间:2017-02-09 06:35:20

标签: android android-intent android-activity

我想用我的应用程序打开另一个应用程序中的特定文件来处理它。例如,在Gmail应用程序的邮件中打开附件。

使用以下intent-filter设置,它可以正常工作。当我打开文件时,MainActivity会显示并处理它,无论是通过其他应用程序打开还是直接从我的应用程序打开。但是,如果从另一个应用程序打开文件,我希望从SplashScreen Activity开始流程。另一方面,如果已激活应用程序,请直接激活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>

2 个答案:

答案 0 :(得分:0)

你必须替换你的活动     

<activity android:name=".SplashActivity">

SplashActivity获取来自Intent的Action,然后检查操作是否为android.intent.action.VIEW然后打开您的MainActivity并将您的文件从SplashActivity发送到{ {1}}。

就是这样

答案 1 :(得分:0)

您无法从清单文件更改启动器活动。您可以在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();
    }
    
  2.   

    OR

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

      @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. 希望这会对你有所帮助。