Я определил активность андроида, и он просто не запускается, независимо от того, как я пытаюсь его запустить. Предполагается, что оно будет запущено как основное действие, но приложение просто зависнет, если я объявлю его как действие по умолчанию, например:
<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");
}
});
}
}