【问题标题】:save data in firestore firebase from android app从android应用程序将数据保存在firestore firebase中
【发布时间】:2019-08-05 06:26:19
【问题描述】:

我开发了一个简单的应用程序,它会在按下按钮后向我显示设备的 imei 以及纬度和经度。现在,我想将这些数据(lat、long、imei)保存在 firestore 中,并且我有一些理解问题,我应该在哪里以及如何将这些数据保存到 firestore。

我无法提供我所做工作的背景,因为我对我应该编码的内容有理解问题。

package com.example.locatieimei;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

private FusedLocationProviderClient client;
private TextView imei;


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






    client = LocationServices.getFusedLocationProviderClient(this);
    Button button = findViewById(R.id.Chk);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (ActivityCompat.checkSelfPermission(MainActivity.this, 
 Manifest.permission.ACCESS_FINE_LOCATION) != 
 PackageManager.PERMISSION_GRANTED && 
 ActivityCompat.checkSelfPermission(MainActivity.this, 
 Manifest.permission.ACCESS_COARSE_LOCATION) != 
 PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then 
overriding
                //   public void onRequestPermissionsResult(int 
requestCode, String[] permissions,
                //                                          int[] 
grantResults)
                 // to handle the case where the user grants the 
permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            client.getLastLocation().addOnSuccessListener(new 
OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {
                    if (location!=null){
                        TextView textView = findViewById(R.id.textView);

                        Double longitude = location.getLongitude();
                        Double latitude = location.getLatitude();

textView.setText(String.valueOf("latitudine"+longitude+ 
"\n"+"longitutine"+latitude));

                    }
                }
            });



        }

    });

}
public void loadIMEI() {
    // Check if the READ_PHONE_STATE permission is already available.
    if (ActivityCompat.checkSelfPermission(this, 
Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.READ_PHONE_STATE)) {
//                get_imei_data();
        } else {
            ActivityCompat.requestPermissions(this, new String[] 
{Manifest.permission.READ_PHONE_STATE},
                    MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
        }
    } else {

        TelephonyManager mngr = 
 (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

        IMEI = mngr.getDeviceId();

        imei.setText(mngr.getDeviceId());
        // READ_PHONE_STATE permission is already been granted.


    }
}
private String device_unique_id;
private static String IMEI;
private static final int MY_PERMISSIONS_REQUEST_READ_PHONE_STATE = 0;

}

当我尝试从 android 添加实时数据库时出现一些错误

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:10:5-24:19 to override.

【问题讨论】:

  • 请分享您用于将数据添加到数据库的代码。
  • 在官方documentation查看它
  • 现在检查我编辑的内容,当我尝试将实时数据库添加到应用程序时出现一些错误。它看起来像一个依赖错误
  • 你在使用 Androidx 依赖吗?
  • 我将 androidx 添加到我的项目中,但我没有添加任何 androidx 依赖项。我在哪里可以找到它?

标签: java android firebase google-cloud-firestore


【解决方案1】:

我有同样的问题,你需要将你的项目迁移到androidx,查看这个参考,他会指导如何做到这一点。 https://developer.android.com/jetpack/androidx/migrate

点击菜单中的Refactor > Migrate to AndroidX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2023-04-04
    • 1970-01-01
    • 2017-12-12
    • 2018-03-05
    • 2013-07-30
    • 2016-12-15
    相关资源
    最近更新 更多