当前位置: 首页 > 知识库问答 >
问题:

如何使用位置选择器解决此问题?

皇甫心思
2023-03-14

这个错误显示在logcat-java中。lang.NoSuchMethodError:没有静态方法zzce(Landroid/content/Context;)V类内Lcom/google/android/gms/common/GoogleAppAvailability;或者它的超类(声明'com.google.android.gms.common.GoogleAppAvailability'出现在/data/app/com.example.gpsnotify-2/base.apk中)

NewtaskActivity.java

package com.example.gpsnotify;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlacePicker;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class NewtaskActivity extends AppCompatActivity {

    //For variables of adding task view
    private EditText edtitle,eddescription;
    Task task;
    DatabaseReference drf;
    FirebaseAuth fuserAuth = FirebaseAuth.getInstance();
    FirebaseUser fuser = fuserAuth.getCurrentUser();
    String uid= fuser.getUid();
    //For variables of adding task view

    //For placepicker
    ImageView map;
    int PLACE_PICKER_REQUEST = 1;
    String longi = null;
    String latt = null;
    //For placepicker

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_newtask);

        //For toolbar
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000")));
        //For toolbar

        //For binding views of newtask layout
        edtitle = (EditText) findViewById(R.id.et_Title);
        eddescription = (EditText) findViewById(R.id.et_Description);
        //For binding views of newtask layout

        //For placepicker
        map = (ImageView) findViewById(R.id.map_pic);
        map.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
                try {
                    startActivityForResult(builder.build(NewtaskActivity.this),PLACE_PICKER_REQUEST);
                } catch (GooglePlayServicesRepairableException e) {
                    e.printStackTrace();
                } catch (GooglePlayServicesNotAvailableException e) {
                    e.printStackTrace();
                }
            }
        });

        //For placepicker

    }
    //For placepicker

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == RESULT_OK) {
                Place place = PlacePicker.getPlace(data, this);
                longi = String.valueOf(place.getLatLng().longitude);
                latt = String.valueOf(place.getLatLng().latitude);
            }
        }
    }

    //For placepicker

    //For save icon
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mif = getMenuInflater();
        mif.inflate(R.menu.new_task_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.save_task:
                savetask();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
    private void savetask(){
        task = new Task();
        drf = FirebaseDatabase.getInstance().getReference("Users").child(uid).child("Tasks");
        String ttl = edtitle.getText().toString();
        String des = eddescription.getText().toString();
        if(ttl.trim().isEmpty())
        {
            edtitle.setError("Enter a title.");
            edtitle.requestFocus();
            return;
        }
        if(des.trim().isEmpty())
        {
            eddescription.setError("Enter a description.");
            eddescription.requestFocus();
            return;
        }
        task.setLatitude(latt);
        task.setLongitude(longi);
        task.setTitle(ttl);
        task.setDescription(des);
        drf.push().setValue(task);
        Toast.makeText(NewtaskActivity.this,"Saved",Toast.LENGTH_SHORT);
        finish();
    }
    //For save icon
}

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.gpsnotify">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="API key" />

        <activity android:name=".NewtaskActivity"
            android:parentActivityName=".MainActivity"
            android:label="Add new task"
            />
        <activity android:name=".LoginActivity" />
        <activity android:name=".SignupActivity" />
        <activity android:name=".SplashscreenActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity" />
    </application>

</manifest>
build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.gpsnotify"
        minSdkVersion 18
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        multiDexEnabled true

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:22.0.0'
    //noinspection GradleCompatible
    implementation 'com.google.android.gms:play-services:12.0.0'
    //implementation 'com.google.android.gms:play-services-location:17.0.0'
    implementation 'com.google.firebase:firebase-core:12.0.0'
    implementation 'com.google.android.gms:play-services-gcm:12.0.0'


    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation "androidx.cardview:cardview:1.0.0"
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
    implementation "androidx.recyclerview:recyclerview:1.1.0"

    implementation 'com.google.firebase:firebase-auth:19.3.1'
    implementation 'com.google.firebase:firebase-storage:12.0.0'
    implementation 'com.google.firebase:firebase-database:12.0.0'
    implementation 'com.firebaseui:firebase-ui-database:6.2.1'
    implementation 'com.firebaseui:firebase-ui-firestore:6.2.1'
    implementation 'android.arch.core:runtime:1.1.1'

    implementation 'com.android.support:multidex:1.0.3'

    //implementation 'com.google.firebase:firebase-firestore:21.4.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

共有1个答案

景恩
2023-03-14
map.setOnClickListener ( new View.OnClickListener () {
            @Override
            public void onClick(View v) {

                openPlacePicker ();

            }
        } );


        private void openPlacePicker () {
            PlacePicker.IntentBuilder builder = new 
    PlacePicker.IntentBuilder ();
            try {
                startActivityForResult ( builder.build ( this ), 
     PLACE_PICKER_REQUEST );

                //Enable Wifi
                wifiManager.setWifiEnabled ( true );


            } catch (GooglePlayServicesRepairableException e) {
                // Log.d("Exception",e.getMessage());

                e.printStackTrace ();
            } catch (GooglePlayServicesNotAvailableException e) {
                //Log.d("Exception",e.getMessage());

                e.printStackTrace ();
            }
        }

        @Override
        protected void onActivityResult ( int requestCode, int 
      resultCode, Intent data){
            super.onActivityResult ( requestCode, resultCode, data );

            if (resultCode == RESULT_OK) {
                switch (requestCode) {
                    case PLACE_PICKER_REQUEST:
                        Place place = PlacePicker.getPlace ( 
     MainActivity.this, data );

                        double latitude = place.getLatLng ().latitude;
                        double longitude = place.getLatLng ().longitude;
                        CharSequence address = place.getAddress ();
                        String PlaceLatLng = String.valueOf ( latitude ) 
     + " , " + String.valueOf ( longitude );

                        tv_MyLocation.setText ( PlaceLatLng );

                }
            }
 类似资料:
  • 我一直在做一个渲染Mandelbrot分形的项目。对于那些知道的人,它是通过迭代以下函数生成的,其中c是复杂平面上的点: 迭代该函数将生成以下分形(忽略颜色): 当你把函数改为这个,(z提高到三次方) 分形应该呈现为这样(同样,颜色并不重要): 然而,当我把z提升到3的幂次时,我得到了一个非常类似于把z提升到2的幂次时的图像。如何正确进行分形渲染?这是完成迭代的代码:(实变量和虚变量只是将屏幕从-

  • 问题内容: 我很难理解如何避免在jpa或hibernate状态下进行n + 1选择。 从我阅读的内容来看,有一个“ left join fetch”,但是我不确定它是否仍然适用于多个列表(oneToMany)。 有人可以给我解释一下,还是给我一个带有清晰完整说明的链接? 很抱歉,如果这是一个菜鸟问题,但我找不到关于此问题的真正清晰的文章或文档。 谢谢 问题答案: 除了联接之外,您还可以使用子选择。

  • 问题内容: 我有一组选择,所有选择都有相同的选项。然后,我通过过滤器运行这些选项,以便在其他选择中选择的任何选项都不会显示在选择中。请参阅此jsFiddle(在非IE浏览器中)以了解我的意思。基本上,我防止在选择中多次选择同一选项 现在,我所做的事情在IE中有问题。在IE中打开小提琴(我只在IE9中尝试过,但是我猜以前的版本有相同的问题)。将最后一个选择更改为AAA。请注意,其他三个选择如何改变了

  • 不幸的是,再也不可能这样做了,这里描述:如何选择Google App Engine服务器的位置 当我创建一个新项目时,没有“高级”设置。如果我仍然只是“盲目”部署(在忽略了令人讨厌的新教程/强行进入喉咙的快速启动后),它将使用欧洲-西方作为地区。

  • 问题内容: 我的CSS定位器有问题。我为父母有一个独特的标签,从那里我可以得到所需的孩子。 该类与所有下拉列表相似,因此唯一会改变的值是。另外,有时我需要取消选择它们。 为此,我有一个定位器。 如您所见,第一部分仍然相同。 所以我的问题是是否有可能编写一些方法(或任何其他方式)来更改定位器的最后一部分?我有600多个下拉菜单,并且为600个新定位器创建了一个目标,这使我发疯。 对我来说,执行类似操

  • 我正在开发一个巴士预订应用程序。我使用Recyclerview和GridLayoutManager创建了座位预订布局。布局已正确创建。我1排有4个座位,最后一排有5个座位。所以我在GridLayoutManager中使用了5个列。中间立柱空出两个座位之间的空间供步行。现在的问题是,如果我点击第1个座位,将选择第1个座位,但图像变化的第5个座位。并且我还在textview中设置了座位号,所以有时显示