Мне нужно, чтобы мое приложение Android перенаправляло на определенную активность c при нажатии на ссылку электронной почты с использованием аутентификации Firebase.
В настоящее время мое приложение перенаправляет на действие запуска . Я бы хотел, чтобы он перенаправил на профиль деятельности , но использует в этом примере активность имени пользователя. Любая помощь приветствуется.
Мой код:
MainActivity. java
@Override
public void onEmailReadListener(String email) {
ActionCodeSettings actionCodeSettings = buildActionCodeSettings();
sendSignInLink(email, actionCodeSettings);
//StartActivityForResult(true, actionCodeSettings);
}
//Email Verification
public ActionCodeSettings buildActionCodeSettings() {
// [START auth_build_action_code_settings]
ActionCodeSettings actionCodeSettings =
ActionCodeSettings.newBuilder()
// URL you want to redirect back to. The domain (www.example.com) for this
// URL must be whitelisted in the Firebase Console.
.setUrl("https://example.page.link/nYJz")
// This must be true
.setHandleCodeInApp(true)
.setAndroidPackageName(
"com.example.AppName",
false, /* installIfNotAvailable */
"23" /* minimumVersion */)
.build();
// [END auth_build_action_code_settings]
return actionCodeSettings;
}
public void sendSignInLink(String email, ActionCodeSettings actionCodeSettings) {
// [START auth_send_sign_in_link]
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.sendSignInLinkToEmail(email, actionCodeSettings)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
else{
Log.e(TAG, "onComplete: Failed=" + task.getException().getMessage());
}
}
});
// [END auth_send_sign_in_link]
}
AndroidManifest . xml
<activity android:name=".Activities.Login.UserCreation.UsernameActivity">
<intent-filter android:autoVerify="true">
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.VIEW"/>
<data android:host="atlas-cd0f2.firebaseapp.com/" android:scheme="https" />
<data android:host="https://example.page.link/" android:scheme="https" />
</intent-filter>
</activity>
Имя пользователяActivity
public class UsernameActivity extends AppCompatActivity {
//create username for account
//TODO disable back; create cancel button
//TODO make ender button press next!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Button next;
TextInputEditText username;
Intent nextPass;
String mUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_username);
next = findViewById(R.id.nextOne);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkUsername() == true) {
mUsername = username.getText().toString();
nextPass.putExtra("username", mUsername);
startActivity(nextPass);
}
else {
Toast.makeText(getApplicationContext(), "Invalid Username", Toast.LENGTH_LONG).show();
}
}
});
nextPass = new Intent(UsernameActivity.this, PasswordActivity.class);
}
public boolean checkUsername() {
Log.v("user0", "0");
username = findViewById(R.id.username);
int j;
String strUsername = username.getText().toString();
Log.v("user1", strUsername);
if (strUsername.length() >= 6 && strUsername.length() <= 30){
Log.v("user2", "2");
char[] chUsername = strUsername.toCharArray();
char[] badChar = {'&', '=', '_', '\'', '-', '+', ',', '<', '>', '.'};
for (int i = 0; i < chUsername.length; i++) {
Log.v("user3", String.valueOf(i));
Log.v("user3.2", String.valueOf(chUsername[i]));
for (j = 0; j < badChar.length; j++) {
Log.v("user3.5", String.valueOf(j));
if (chUsername[i] == badChar[j]) {
Log.v("user4", String.valueOf(j));
Log.v("user5", String.valueOf(i));
j = 0;
Log.v("user6", String.valueOf(j));
return false;
}
}
}
return true;
}
Log.v("user8", "8");
return false;
}
}
StartActivity в AndroidManifest Это действие с обозначением пусковой установки
<activity android:name=".Activities.Login.StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>