Запуск совместного использования активности на Android несколько раз при использовании singleInstance: получение всегда первого URL - PullRequest
0 голосов
/ 20 июня 2019

У меня есть Android-приложение, в котором я могу сохранять URL-адреса из браузера через функцию общего доступа (я создал второе действие общего ресурса с фильтром намерений отправки)

Я попытался изменить launchMode для всех четырех различных опций, он работает, если на стандартном или верхнем, но затем для каждого общего ресурса запускается один экземпляр приложения.

<activity android:name=".ShareActivity" android:launchMode="singleInstance">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/*" />
    </intent-filter>
</activity>
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Основное действие показывает все существующие записи, в то время как share-действие берет указанный URL-адрес и сохраняет его, а затем запускает основное действие:

/**
 * Handle share-intent
 */
 protected void shareIntent()
 {
    String url = intent.getStringExtra(Intent.EXTRA_TEXT);  <- This is always the same when shared multiple urls
    // Here save the url ecc, wich works, so omiting the code

    startActivity(new Intent(getApplicationContext(), MainActivity.class)); <-- This starts the main-activity after the url has been saved
 }

/**
 * Main onCreate method, this will be called the first time when sharing
 * @param savedInstanceState
 */
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        this.shareIntent();
 }

 // This will be called when sharing multiple times
 @Override
 protected void onResume()
 {
     super.onResume();
     this.shareIntent();
 }

Когда я использую стандартный или singleTop launchMode, URL сохраняется правильно, но каждый раз при запуске нового экземпляра. Если я использую singleTask или -Instance, будет только один экземпляр приложения, но URL всегда будет первым, независимо от того, сколько раз я делюсь чем-либо.

Заранее спасибо

[Обновление]: это работает! Я сделал это:

@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);
    setIntent(intent);
}

И удалил вызов метода share из oncreate (поскольку onresume вызывается даже в первый раз).

...