android: frontend: startup: Improve startup and permissions handling.
- Fixes a first boot crash.
This commit is contained in:
parent
d690e4d120
commit
81042d8e12
@ -47,7 +47,13 @@ public final class MainActivity extends AppCompatActivity implements MainView {
|
||||
setSupportActionBar(mToolbar);
|
||||
|
||||
mFrameLayoutId = R.id.games_platform_frame;
|
||||
mFab.setOnClickListener(view -> mPresenter.onFabClick());
|
||||
mFab.setOnClickListener(view -> {
|
||||
if (PermissionsHandler.hasWriteAccess(this)) {
|
||||
mPresenter.onFabClick();
|
||||
} else {
|
||||
PermissionsHandler.checkWritePermission(this);
|
||||
}
|
||||
});
|
||||
mPresenter.onCreate();
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
@ -117,7 +123,11 @@ public final class MainActivity extends AppCompatActivity implements MainView {
|
||||
|
||||
@Override
|
||||
public void launchSettingsActivity(String menuTag) {
|
||||
SettingsActivity.launch(this, menuTag, "");
|
||||
if (PermissionsHandler.hasWriteAccess(this)) {
|
||||
SettingsActivity.launch(this, menuTag, "");
|
||||
} else {
|
||||
PermissionsHandler.checkWritePermission(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -162,6 +172,9 @@ public final class MainActivity extends AppCompatActivity implements MainView {
|
||||
mPlatformGamesFragment = new PlatformGamesFragment();
|
||||
getSupportFragmentManager().beginTransaction().add(mFrameLayoutId, mPlatformGamesFragment)
|
||||
.commit();
|
||||
|
||||
// Immediately prompt user to select a game directory on first boot
|
||||
findViewById(R.id.button_add_directory).callOnClick();
|
||||
} else {
|
||||
Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -1,16 +1,11 @@
|
||||
package org.citra.citra_android.utils;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.citra.citra_android.R;
|
||||
|
||||
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
|
||||
|
||||
@ -29,13 +24,6 @@ public class PermissionsHandler {
|
||||
}
|
||||
|
||||
if (isFirstBoot(activity)) {
|
||||
if (activity.shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE)) {
|
||||
showMessageOKCancel(activity, activity.getString(R.string.write_permission_needed),
|
||||
(dialog, which) -> activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE},
|
||||
REQUEST_CODE_WRITE_PERMISSION));
|
||||
return false;
|
||||
}
|
||||
|
||||
activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE},
|
||||
REQUEST_CODE_WRITE_PERMISSION);
|
||||
return false;
|
||||
@ -52,17 +40,4 @@ public class PermissionsHandler {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void showMessageOKCancel(final FragmentActivity activity, String message,
|
||||
DialogInterface.OnClickListener okListener) {
|
||||
new AlertDialog.Builder(activity)
|
||||
.setIcon(R.drawable.ic_launcher)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(android.R.string.ok, okListener)
|
||||
.setNegativeButton(android.R.string.cancel, (dialogInterface, i) ->
|
||||
Toast.makeText(activity, R.string.write_permission_needed, Toast.LENGTH_SHORT)
|
||||
.show())
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,10 @@
|
||||
package org.citra.citra_android.utils;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import org.citra.citra_android.R;
|
||||
import org.citra.citra_android.activities.EmulationActivity;
|
||||
@ -34,24 +32,13 @@ public final class StartupHandler {
|
||||
public static void HandleInit(FragmentActivity parent) {
|
||||
if (PermissionsHandler.isFirstBoot(parent)) {
|
||||
// Prompt user with standard first boot disclaimer
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(parent);
|
||||
builder.setTitle(R.string.app_name);
|
||||
builder.setIcon(R.drawable.ic_launcher);
|
||||
builder.setMessage(parent.getResources().getString(R.string.app_disclaimer));
|
||||
builder.setPositiveButton("OK", null);
|
||||
|
||||
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
// Ensure user agrees to any necessary app permissions
|
||||
handlePermissionsCheck(parent);
|
||||
|
||||
// Immediately prompt user to select a game directory on first boot
|
||||
View view = parent.findViewById(R.id.button_add_directory);
|
||||
view.callOnClick();
|
||||
}
|
||||
});
|
||||
|
||||
builder.show();
|
||||
new AlertDialog.Builder(parent)
|
||||
.setTitle(R.string.app_name)
|
||||
.setIcon(R.mipmap.ic_launcher)
|
||||
.setMessage(parent.getResources().getString(R.string.app_disclaimer))
|
||||
.setPositiveButton("OK", null)
|
||||
.setOnDismissListener(dialogInterface -> handlePermissionsCheck(parent))
|
||||
.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user