Откройте специальный файловый документ в моем android приложении после входа пользователя - PullRequest
0 голосов
/ 07 мая 2020

У меня есть три действия:

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, тогда ничего не произошло.

Если пользователь уже вошел в систему:

ничего не произошло

Любая помощь, пожалуйста, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...