我的应用程序允许其他可以共享文件的应用程序在共享菜单上选择它,打开应用程序并将文件“传输”到我的应用程序。
我的问题是当他们从共享菜单中选择我的应用程序时(例如,在图库中,选择几张照片后,他们选择与我的应用程序共享)登录活动在图库应用程序中打开
请注意,我已经尝试过此过程适用于旧设备并且它有效,但不适用于较新的设备。
这是我的 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>
我有这个应用程序的两个活动,登录和主,如果登录成功,主将被加载。
我尝试了不同类型的启动器模式设置,但没有什么能阻止在图库中创建实例
这是来自我的登录活动
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 方法按预期调用,但在新设备上它只是忽略启动器模式并创建新实例并运行 onCreate()
关于如何让应用程序在从共享菜单调用时“强制”启动自己的任何想法?
当前测试设备 - 三星移动 Android 8.0,API 26 - 不工作三星平板电脑 Android 7.1.1,API 25 - 按预期工作