У меня есть приложение, которое позволяет другим приложениям, которые могут обмениваться файлами, выбирать его в меню общего доступа, открывать приложение и «передавать» файлы в мое приложение.
Моя проблема заключается в том, что они выбираютмое приложение из меню общего доступа (например, в галерее, после выбора нескольких фотографий, они решили поделиться с моим приложением), активность входа открывается в приложении галереи
Обратите внимание, что я пробовал этот процесс работаетна старых устройствах, и это работало, но не для более нового устройства.
Это мой manifest.xml
<application
android:name="com.Application"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:mimeType="*/*"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan"/>
<activity
android:name=".login.LoginActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustResize|stateVisible">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
</application>
У меня есть два действия для этого приложения: логин и Main, Main будет загруженв случае успешного входа в систему.
Я пытался использовать разные настройки launcherMode, но ничто не мешало созданию экземпляра в галерее
Это из моего логина. Активность
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
receivedIntent = getIntent();
//set orientation
setRequestedOrientation(isPhone() ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent != null && intent.getAction() != null && (intent.getAction().equals(Intent.ACTION_SEND) || intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE))){
finish();
startActivity(intent);
}
}
Проблема в том, что на старом устройстве метод onNewIntent вызывается, как и ожидалось, но на более новом устройстве он просто игнорируетe launcherMode и создает новый экземпляр и запускает onCreate ()
Любые идеи о том, как заставить приложение «принудительно» запускаться при вызове из общего меню?
Текущие устройства тестирования - Samsungмобильный Android 8.0, API 26 - не работает Samsung Tablet Android 7.1.1, API 25 - работает как положено