- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在添加 firebase google 和 Gmail 登录但是当我粘贴我的代码时onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) 方法我得到这个错误
Cannot resolve symbol 'AuthUI'
在 AuthUI 词上,所有 AuthUI 词都变红了onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) 方法。
MainActivity代码
package com.google.firebase.udacity.friendlychat;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public static final String ANONYMOUS = "anonymous";
public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000;
public static final int RC_SIGN_IN=1;
private ListView mMessageListView;
private MessageAdapter mMessageAdapter;
private ProgressBar mProgressBar;
private ImageButton mPhotoPickerButton;
private EditText mMessageEditText;
private Button mSendButton;
private String mUsername;
private FirebaseDatabase database;
private DatabaseReference databaserefrence;
private ChildEventListener databaselistener;
private FirebaseAuth auth;
private FirebaseAuth.AuthStateListener auhtlistener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUsername = ANONYMOUS;
database = FirebaseDatabase.getInstance();
databaserefrence= database.getReference().child("messages");
auth= FirebaseAuth.getInstance();
// Initialize references to views
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mMessageListView = (ListView) findViewById(R.id.messageListView);
mPhotoPickerButton = (ImageButton) findViewById(R.id.photoPickerButton);
mMessageEditText = (EditText) findViewById(R.id.messageEditText);
mSendButton = (Button) findViewById(R.id.sendButton);
// Initialize message ListView and its adapter
List<FriendlyMessage> friendlyMessages = new ArrayList<>();
mMessageAdapter = new MessageAdapter(this, R.layout.item_message, friendlyMessages);
mMessageListView.setAdapter(mMessageAdapter);
// Initialize progress bar
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
// ImagePickerButton shows an image picker to upload a image for a message
mPhotoPickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO: Fire an intent to show an image picker
}
});
// Enable Send button when there's text to send
mMessageEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.toString().trim().length() > 0) {
mSendButton.setEnabled(true);
} else {
mSendButton.setEnabled(false);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});
// Send button sends a message and clears the EditText
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO: Send messages on click
FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), mUsername, null);
databaserefrence.push().setValue(friendlyMessage);
// Clear input box
mMessageEditText.setText("");
}
});
databaselistener= new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
mMessageAdapter.add(dataSnapshot.getValue(FriendlyMessage.class));
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
databaserefrence.addChildEventListener(databaselistener);
auhtlistener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
{
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user!=null)
{
}
else
{
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(
Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.TWITTER_PROVIDER).build()))
.build(),
RC_SIGN_IN);
}
}
};
auth.addAuthStateListener(auhtlistener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
}
FriendlyMessage.java代码
package com.google.firebase.udacity.friendlychat;
public class FriendlyMessage {
private String text;
private String name;
private String photoUrl;
public FriendlyMessage()
{
}
public FriendlyMessage(String text, String name, String photoUrl) {
this.text = text;
this.name = name;
this.photoUrl = photoUrl;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhotoUrl() {
return photoUrl;
}
public void setPhotoUrl(String photoUrl) {
this.photoUrl = photoUrl;
}
}
消息适配器类代码
package com.google.firebase.udacity.friendlychat;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
public class MessageAdapter extends ArrayAdapter<FriendlyMessage> {
public MessageAdapter(Context context, int resource, List<FriendlyMessage> objects) {
super(context, resource, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.item_message, parent, false);
}
ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView);
TextView messageTextView = (TextView) convertView.findViewById(R.id.messageTextView);
TextView authorTextView = (TextView) convertView.findViewById(R.id.nameTextView);
FriendlyMessage message = getItem(position);
boolean isPhoto = message.getPhotoUrl() != null;
if (isPhoto) {
messageTextView.setVisibility(View.GONE);
photoImageView.setVisibility(View.VISIBLE);
Glide.with(photoImageView.getContext())
.load(message.getPhotoUrl())
.into(photoImageView);
} else {
messageTextView.setVisibility(View.VISIBLE);
photoImageView.setVisibility(View.GONE);
messageTextView.setText(message.getText());
}
authorTextView.setText(message.getName());
return convertView;
}
}
build.gradle(project:friendlyChat)代码
buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2' //alrae
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.google.gms:google-services:3.0.0' //already
}
}
allprojects {
repositories {
jcenter()
mavenLocal()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(Module:app) 代码
apply plugin: 'com.android.application'
repositories {
mavenLocal()
flatDir {
dirs 'libs'
}
}
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.google.firebase.udacity.friendlychat"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Displaying images
// already
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.google.firebase:firebase-database:11.0.4'
compile 'com.google.firebase:firebase-auth:11.0.4'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
最佳答案
FirebaseUI Version Firebase/Play Services Version
2.3.0 11.0.4
您应该将其添加到您的 build.gradle
部分。
compile 'com.firebaseui:firebase-ui-auth:2.3.0'
关于java - 无法解析符号 'AuthUI',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419344/
我目前正在从我的应用中删除 FirebaseUI Auth,并将其替换为“原始”Firebase Auth 代码。 现在,我通过 GoogleSignInClient.silentSignIn() 和
我正在添加 firebase google 和 Gmail 登录但是当我粘贴我的代码时onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) 方法
在 Firebase 中,我使用 AuthUI 进行登录。我试过 FirebaseAuth.getInstance.signout()删除当前用户凭据,但我认为对于 Google SmartLock
我正在使用 Firebase AuthUI 3.3.0 通过手机号码进行身份验证,问题是在 Debug模式下它可以工作,但在生产模式下( Release模式),我收到一个错误, Unknown Err
我是 Firebase 和 Firebase Auth UI 的新手,有两个问题: 我正在使用 Firebase Auth UI 进行简单的登录 Activity 。如何在屏幕上添加匿名登录选项?该选
我正在使用 Firebase AuthUI 登录我的应用程序,特别是通过 Facebook。我已在我的控制台中验证我的登录成功,因为我看到添加了用户。 但是,我的回调方法没有触发,我已经实现了 toa
我正在使用 firebase AuthUI 来注册/登录用户。根据用户是新用户还是现有用户,我需要将他们重定向到不同的 View Controller 。 firebase 是否提供检查该功能的功能?
我是 iOS 开发新手..我想实现 firebase 不礼貌的 UI 这是我的ViewController文件 import UIKit import Firebase import Firebase
我知道在基本的 firebase 身份验证中,我可以在 OnCompleteListener.onComplete 回调中使用 AdditionalUserInfo.isNewUser() 方法来查看
我正在尝试从 AppDelegate.swift 启动谷歌登录,然后在登录成功后启动我的应用程序的主屏幕。 我可以 如上所示显示 google 登录按钮 用户被发送到 google 以登录 用户被送回
我已经关注了 Firebase 的介绍,但是我的 build.gradle 似乎有问题。 MainActivity代码 public void onAuthStateChanged(@NonNull
我需要在我的程序中使用 firebase-ui-auth... //选择身份验证提供者 列表提供者 = Arrays.asList( 新的 AuthUI.IdpConfig.EmailBuilder(
我使用最新的 Firebase (11.8.0) 和 Firebase UI (3.2.1) 来显示用户身份验证,如下所示: val providers = Arrays.asList(
在使用 firebase UI 时,我无法找到明确的 Activity 类 com.firebase.ui.auth.KickoffActivity protected void onCreate(
当我尝试使用 Apple 登录时,Firebase AuthUI 对于显示名称和电子邮件返回 nil。这是我的代码 lazy var authUI: FUIAuth? = { let
我使用 Vuejs 构建了一个单页应用程序,并使用 Firebase 进行身份验证。到目前为止,我已经登录并注册了,可以毫无问题地工作。我现在遇到的问题是社会身份验证。 当我加载注册页面时,社交按钮呈
是否有任何选项可以使用 AuthUI.getInstance().createSignInIntentBuilder() 设置自定义背景图像? 或任何其他设置此背景图片的建议? FirebaseUI-
我正在尝试通过 FirebaseUI Auth 连接 Facebook 登录,但是我无法让 Facebook 连接按钮出现在实例化的 authViewController 中。平台:iOS,语言:Sw
我是一名优秀的程序员,十分优秀!