24

Android アプリで Firebase によってリリースされた新しい Firestore を使用しようとしています。残念ながら、データベースに書き込もうとすると、このエラーが発生し続けます。

public class MainActivity extends AppCompatActivity {

EditText txtName,txtSurname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar =  findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    txtName = findViewById(R.id.Name);
    txtSurname = findViewById(R.id.Surname);

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            FirebaseFirestore db = FirebaseFirestore.getInstance();

            Map<String, Object> user = new HashMap<>();
            user.put("first", "Ada");
            user.put("last", "Lovelace");
            user.put("born", 1815);

            db.collection("users")
                    .add(user)
                    .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                        @Override
                        public void onSuccess(DocumentReference documentReference) {
                            //Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            //Log.w(TAG, "Error adding document", e);
                        }
                    });

        }
    });
}

これは私が取得し続けるエラーです。アシスタントを介してプロジェクトを Android アプリに追加しました。だから問題はないはずです。

プロセス: いまいましい.testapp、PID: 2622
java.lang.IllegalArgumentException: FirebaseOptions.getProjectId() は com.google.firebase.firestore.FirebaseFirestore.zze (不明なソース) で null にすることはできません com.google.firebase.firestore.FirebaseFirestore.getInstance (不明なソース) でdamn.testapp .MainActivity$1.onClick(MainActivity.java:44) で android.view.View.performClick(View.java:5637) で android.view.View$PerformClick.run(View.java:22429) で android.os.Handler android.os.Handler.dispatchMessage(Handler.java:95) の .handleCallback(Handler.java:751) java:6119) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) の java.lang.reflect.Method.invoke(ネイティブ メソッド) com.android.internal.os.ZygoteInit.メイン (ZygoteInit.java:776)

どんな助けでも大歓迎です。

データベースのセキュリティ ルールは次のとおりです。

service cloud.firestore {
  match /databases/{database}/documents {
match /{document=**} {
  allow read, write;
    }
  }
}

そして、これは私が使用している依存関係です:

    compile 'com.google.firebase:firebase-firestore:11.4.2'
4

6 に答える 6

53

私も同じ問題を抱えていました。これでgradleで解決:3.0.0から3.1.0

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:3.1.0'
    }
}
于 2017-10-04T19:05:25.233 に答える
0

これが問題の原因です。

FirebaseFirestore db = FirebaseFirestore.getInstance();

代わりに、次のように使用します。

private DocumentReference documentReference = FirebaseFirestore.getInstance().document("sampleData/myData");

そして、このようにデータを保存します。

    Map<String, Object> user = new HashMap<>();
    user.put("first", "Ada");
    user.put("last", "Lovelace");
    user.put("born", 1815);
    documentReference
            .set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d("MainActivity", "DocumentSnapshot added with ID: " + documentReference.getId());
        }
    });
于 2017-10-04T12:57:39.750 に答える