У меня есть три действия:
MainActivity, LoginActivity, OpenFileActivity
Мой первый код работал нормально, я открываю свой собственный тип файла с помощью OpenFileActivity
Мой старый код манифеста:
<activity
android:name="OpenFileActivity"
android:label="Open txt2 file"
android:theme="@style/AppTheme">
<intent-filter android:label="OPEN">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"
android:host="*" />
<data android:pathPattern=".*\\.txt2" />
<data android:pathPattern=".*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.txt2" />
</intent-filter>
<intent-filter android:label="OPEN">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"
android:host="*" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.txt2" />
<data android:pathPattern=".*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.txt2" />
</intent-filter>
</activity>
Этот код работал нормально,
Я пытался изменить код:
Не позволять пользователю открывать файл txt2 только после того, как пользователь логин.
Итак, у меня есть два сценария:
если пользователь уже вошел в систему:
вызовите Main Activity, затем OpenFileActivity
MainActivity ==> OpenFileActivity
если нет:
MainActivity ===> LoginActivity ===> MainActivity ===> OpenFileActivity
Я использую sharedPreferences для вызова соответствующего действия
Мой новый код манифеста:
<activity
android:name="MainActivity"
android:label="@string/title_activity_main"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="OPEN">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"
android:host="*" />
<data android:pathPattern=".*\\.txt2" />
<data android:pathPattern=".*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.txt2" />
</intent-filter>
<intent-filter android:label="OPEN">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"
android:host="*" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.txt2" />
<data android:pathPattern=".*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.txt2" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.txt2" />
</intent-filter>
</activity>
My MainActivity. java код:
if (sharedPreference.getTxt2fileUri() !=null){ // check if the file uri to open is stored in sharedPreferences
Intent intent = new Intent(MainActivity.this, OpenFileActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(EXTRA_TXT2_FILE_URI, sharedPreference.getTxt2fileUri());
startActivity(intent);
}
else if (getIntent().getData() != null) { // always no data here, why ?
if (UserLogged) { // if user is already login in
Intent intent = new Intent(MainActivity.this, OpenFileActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(EXTRA_TXT2_FILE_URI, getIntent().getData());
startActivity(intent);
} else {
// save to shared preferences
sharedPreference.txt2fileUri.setValue(getIntent().getData()); // store file Uri to sharedPreferences
}
}
userLog(); // log user
super.onCreate(savedInstanceState);
Проблема: если пользователь не вошел в систему, когда я нажимаю на файл .txt2, приложение открывается в Main Activity, затем вызывая LoginActivity, MainActivity, тогда ничего не произошло.
Если пользователь уже вошел в систему:
ничего не произошло
Любая помощь, пожалуйста, спасибо