我正在尝试更新我的Android O应用程序,并且这样做需要更新以支持库26.
我的compileSdkVersion是26,targetSdkVersion 26,buildToolsVersion 26.0.1,支持库版本是26.0.1,播放服务/ firebase消息是11.0.4.我正在使用Android Studio 3.0 b2和android gradle插件3.0.0-beta2.看来这个版本对支持库冲突更加敏感.
我必须手动排除支持依赖项以解决冲突,因为播放服务和firebase链接对旧版本的支持库:
implementation("com.google.android.gms:play-services-auth:$playServicesVersion",{
exclude group: 'com.android.support'
})
implementation("com.google.android.gms:play-services-identity:$playServicesVersion",{
exclude group: 'com.android.support'
})
implementation("com.google.android.gms:play-services-base:$playServicesVersion",{
exclude group: 'com.android.support'
})
implementation("com.google.android.gms:play-services-analytics:$playServicesVersion",{
exclude group: 'com.android.support'
})
implementation("com.google.firebase:firebase-messaging:$playServicesVersion",{
exclude group: 'com.android.support'
})
implementation("com.google.firebase:firebase-analytics:$playServicesVersion",{
exclude group: 'com.android.support'
})
Run Code Online (Sandbox Code Playgroud)
这修复了我的所有依赖冲突,除了一个.
Google Play服务/ Firebase需要使用google-services gradle插件来解析生成的.json文件,并在应用中包含必要的密钥/秘密.我的build.grade有一个buildcript块,如下所示:
buildscript {
repositories {
maven { url "https://maven.google.com" }
jcenter()
}
dependencies {
classpath "com.google.gms:google-services:3.1.0"
}
}
Run Code Online (Sandbox Code Playgroud)
在脚本的最后,我应用插件.随着apply和classpath被注释掉,一切都正确编译.但是,似乎google-services 3.1.0增加了对支持库版本25.2.0的依赖,而我无法弄清楚如何覆盖它.消息是:
- 出了什么问题:任务':app:preDevelopmentDebugBuild'执行失败.
Android依赖项"com.android.support:support-v4"具有不同版本的编译(25.2.0)和运行时(26.0.1)类路径.您应该通过DependencyResolution手动设置相同的版本
请注意,我甚至无法降级到支持库25.4.0,因为我得到了相同的错误(只需用25.4.0替换上面的消息中的26.0.1).唯一有效的版本是25.2.0
运行./gradlew app:dependencies包含类路径依赖项,给我这个:
compile - Compile dependencies for 'main' sources (deprecated: …Run Code Online (Sandbox Code Playgroud) android firebase google-play-services android-gradle-plugin android-8.0-oreo
我正在开发一款使用Firebase身份验证通过电话号码登录用户的应用.我想添加一个功能,只有一次登录用户,即使用户杀死应用程序并再次启动它,他应该登录.另外,我不想添加注销功能.可以做些什么呢?
我对 Android 和 Firestore 都很陌生,无法弄清楚如何设置 Firestore 对象的设置。这是我一直在使用的代码:
public class MainActivity extends AppCompatActivity
FirebaseFirestore firestore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firestore = FirebaseFirestore.getInstance();
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder().setTimestampsInSnapshotsEnabled(true).build();
firestore.setFirestoreSettings(settings);
}
Run Code Online (Sandbox Code Playgroud)
但这给出了一个错误:
java.lang.IllegalStateException: FirebaseFirestore has already been started and its settings can no longer be changed. You can only call setFirestoreSettings() before calling any other methods on a FirebaseFirestore object.
Run Code Online (Sandbox Code Playgroud)
但是,此错误仅在我使用 setPersistanceEnabled(false) 和/或 setTimestampsInSnapshotsEnabled(true) 时发生。
如果我使用 setPersistanceEnabled(true) 和/或 setTimestampsInSnapshotsEnabled(false),应用程序就可以工作。
如果有人可以帮助我真的很感激。我已经坚持了一段时间了。
我想使用 Firebase 获取服务器上的当前时间,而无需写入数据库然后读取它。
有人知道直接从 Firebase 获取当前时间戳的解决方案吗?
我在检查 Firestore 数据库中是否存在我的集合时遇到问题。当我使用 Firebase 实时数据库时,我可以使用:
if(databaseSnapshot.exists)
Run Code Online (Sandbox Code Playgroud)
现在,我想通过 Firestore 做同样的事情。我已经尝试过了
if (documentSnapshots.size() < 0)
Run Code Online (Sandbox Code Playgroud)
但它不起作用。这是当前的代码:
public void pullShopItemsFromDatabase() {
mShopItemsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
ShopItem shopItem = document.toObject(ShopItem.class);
shopItems.add(new ShopItem(shopItem.getImageUrl(), shopItem.getTitle(), shopItem.getSummary(), shopItem.getPowerLinkID(), shopItem.getlinkToShopItem(),shopItem.getLinkToFastPurchase(), shopItem.getKey(), shopItem.getPrice(),shopItem.getVideoID()));
}
if (shopItems != null) {
Collections.sort(shopItems);
initShopItemsRecyclerView();
}
} else {
Log.w(TAG, "Error getting documents.", task.getException());
setNothingToShow();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
函数:setNothingToShow(); 如果我的集合为空/不存在,这实际上是我想要执行的。请指教!感谢:D。
我正在尝试获取Cloud Firestore上存在的CollectionReference计数,我试图通过以下方式获取它:
FirebaseFirestore db = FirebaseFirestore.getInstance();
final CollectionReference postsCollection = db.collection("Posts");
final TaskCompletionSource<Integer> source = new TaskCompletionSource<>();
new Thread(new Runnable() {
@Override
public void run() {
int fromWhereToStart = postsCollection.get().getResult().size();
source.setResult(fromWhereToStart);
}
}).start();
Task<Integer> task = source.getTask();
task.addOnCompleteListener(new OnCompleteListener<Integer>() {
@Override
public void onComplete(@NonNull Task<Integer> task) {
Log.e("Z_fromWhereToStart", "= " + task.getResult());
}
});
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我得到了:
java.lang.IllegalStateException: Task is not yet complete
Run Code Online (Sandbox Code Playgroud)
还有另一种方法来计算另一种修复方法IllegalStateException吗?
java android illegalstateexception firebase google-cloud-firestore
我有一个 RecyclerView 和一个用于“绑定”每个项目的按钮(移动到数据库中的另一个子项)。
大多数时候它运行良好,但有时我会收到indexOutOfBounds 异常。
这是一个屏幕截图:
当我按顶部回收器视图项目的“BIND”时,我收到了此错误。我让它打印这一行:
Log.d("dDebug","Almost bug! Size: " + ((MissionAdapter) MissionAdapter.this).mSnapshots.size() + " , index: " + missionPosition);
Run Code Online (Sandbox Code Playgroud)
它打印出这个:
D/dDebug: Almost bug! Size: 1 , index: 1
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到错误 - 大小 1,索引 1,因此它将有indexOutOfBounds。
这是代码:
public class AvailableFragmentPilot extends Fragment {
private String TAG = "dDEBUG";
private RecyclerView mavailableList;
private DatabaseReference mAvailableMissionsDb, mPendingMissionsDb;
private FirebaseAuth mAuth;
private ProgressDialog mSubmitMsnProgress;
private String mCurrent_pilot_id;
private View mMainView;
// Query queries;
public AvailableFragmentPilot() {
// Required empty public constructor
}
@Override
public …Run Code Online (Sandbox Code Playgroud) java android firebase android-recyclerview firebase-realtime-database
我有一棵Firestore收集树,我打算在其中仅存储一个文档。我想检查该集合是否包含该文档,如果包含,请检索该文档的ID!有什么想法/想法吗?
谢谢 :)
我正在创建一个spinner将显示主题名称的。主题名称存储在我的 Firestore 数据库中,如下所示:
subjects (collection)
|
|--- SUB01 (document)
| |
| |--- name : "Android"
|
|--- SUB02
| |
| |--- name : "Java"
Run Code Online (Sandbox Code Playgroud)
我可以将结果提取到一个RecyclerView但无法帮助自己为微调器这样做。
我想使用 Google 帐户登录我的应用程序。我使用 Firebase 对用户进行身份验证。
我已经阅读了该文档一百万遍。我已将 SH1 调试密钥作为指纹添加到 Firebase 项目中,并使用Web SDK configurationFirebase 作为 Web 客户端 ID:

我已经在 strings.xml 文件中设置了它
<string name="web_client_id">**HERE**</string>
我的其余代码如下所示:
public class AuthFragment extends Fragment {
private FragmentAuthBinding binding;
private SignInClient oneTapClient;
ActivityResultLauncher<Intent> oneTapLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
try {
var credential = oneTapClient.getSignInCredentialFromIntent(data);
String idToken = credential.getGoogleIdToken();
} catch (ApiException e) {
throw new RuntimeException(e);
}
}
});
public AuthFragment() {}
@Override
public View …Run Code Online (Sandbox Code Playgroud) java android firebase google-cloud-platform firebase-authentication