Активность Android не начинается независимо от метода, используемого для его запуска - PullRequest
0 голосов
/ 30 октября 2018

Я определил активность андроида, и он просто не запускается, независимо от того, как я пытаюсь его запустить. Предполагается, что оно будет запущено как основное действие, но приложение просто зависнет, если я объявлю его как действие по умолчанию, например:

    <activity
        android:name=".activity.StartupActivity"
        android:screenOrientation="portrait"
        android:theme="@style/NoActionAppTheme">
        <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.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="url"
                android:pathPrefix="/prefix"
                android:scheme="https" />
            <data
                android:host="url"
                android:scheme="https" />
        </intent-filter>
    </activity>

Я пытался поставить точку останова в первой строке onCreate и Log строк в этом упражнении, но это задание просто не запускается. Я думаю, что исходный код действия нерелевантен, поскольку он никогда не запускается. Пожалуйста, дайте мне знать, если это необходимо. Я попытался установить другой вид деятельности по умолчанию и начать с него StartupActivity следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (! AppRuntime.b) {
        AppRuntime.b = true;
        startActivity(new Intent(this, StartupActivity.class));
        finish();
        return;
    }
// other stuff
}

Но результат аналогичен тому, что я вижу, когда StartupActivity является активностью по умолчанию. Точки останова в этом упражнении работают как положено. Проблема возникает при запуске StartupActivity. Что вызывает эту проблему?

Примечание: StartupActivity расширяет AppCompatActivity и переопределяет только onCreate и onActivityResult.

Редактировать: вот код активности:

public class StartupActivity extends AppCompatActivity {

    SharedPreferences sp;
    String deepLink = "";

    final int SIGNUP_REQUEST_CODE = 0;
    final int TUTORIAL_REQUEST_CODE = 1;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState);
        addressInvitation();

        sp = App.getSharedPreferences();

        MobileAds.initialize(this, Utils.getAdmobID());

        setContentView(R.layout.activity_splash_screen);
        //load the ad
//        mAdView = findViewById(R.id.adView);
//        AdRequest adRequest = new AdRequest.Builder().build();
//        mAdView.loadAd(adRequest);

        Log.d("DEBUGGING", "calling bootstrap");

        bootstrapApp();
    }


    private void bootstrapApp() {
        if (! sp.contains("signed_in")) {
            sp.edit().clear().apply();
            Log.d("DEBUGGING", "starting signup activity");
            startActivityForResult(new Intent(this, SignUp.class), SIGNUP_REQUEST_CODE);
        } else if (! sp.contains("isFirstTime")) {
            Log.d("DEBUGGING", "starting tutorial");
            startActivityForResult(new Intent(this, TutorialsActivity.class), TUTORIAL_REQUEST_CODE);
        } else {
            Log.d("DEBUGGING", "going to splash screen");
            startActivity(new Intent(this, SplashScreen.class));
            finish();
        }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case SIGNUP_REQUEST_CODE:
                Log.d("DEBUGGING", "signup returned");
                if (resultCode == RESULT_OK) {
                    sp.edit()
                            .putBoolean("signed_in", true)
                            .apply();
                } else {
                    finish();
                }
                break;
            case TUTORIAL_REQUEST_CODE:
                Log.d("DEBUGGING", "tutorial returned");
                if (resultCode == RESULT_OK) {
                    sp.edit()
                            .putBoolean("isFirstTime", true)
                            .apply();
                } else {
                    finish();
                }
                break;
        }
        bootstrapApp();
    }



    private void addressInvitation() {
        FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
                .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                    @Override
                    public void onSuccess(PendingDynamicLinkData data) {
                        if (data == null) {
                            return;
                        }

                        // Get the deep link
                        deepLink = data.getLink().toString();

                        // Extract invite
                        FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(data);
                        if (invite != null) {
                            String invitationId = invite.getInvitationId();
                        }
                    }
                })
                .addOnFailureListener(this, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.e("HandleInvitaiton", "COULD NOT HANDLE");
                    }
                });
    }
}

1 Ответ

0 голосов
/ 30 октября 2018

Я вижу проблему. Вы используете

public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)

вместо

protected void onCreate(@Nullable Bundle savedInstanceState)

Вы переопределяете неправильный метод.

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