У меня есть 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 вызывается даже в первый раз).