Android 地点选择器启动后立即关闭

2023-12-10

我正在开发一个android应用程序作为项目的一部分,并使用Google地方API来根据位置显示感兴趣的地方。我正在使用 PlacePicker Inentbuilder 来完成此任务。

但是,当应用程序运行时,地点选择器会启动,然后立即关闭(大约 1-2 秒)。

我已经实施了以下建议(我从其他答案中得到的):

我已经为 Android 应用程序生成了公共 API 密钥,并将其包含在应用程序清单的元数据标记中。

我已在开发人员控制台上启用了“Google Places API for android”API。

我已将最新的播放服务版本包含在 build.gradle 的依赖项中。

我已经包含了我的代码和下面的 logcat。如果我需要添加其他内容,请告诉我。

清单.xml:

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <meta-data
        android:name="com.google.android.geo.api_key"
        android:value="@string/google_api_key" />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_api_key" />"

    <activity
        android:name=".LoginActivity"
        android:label="@string/title_activity_login" >
    </activity>
    <activity
        android:name=".PlacesSample"
        android:label="@string/title_activity_places_sample" >
        <meta-data
            android:name="com.google.android.geo.api_key"
            android:value="@string/google_api_key" />
    </activity>
</application>

</manifest>

Build.gradle(应用程序模块 - 这是唯一的模块)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.sampath.project.project_v2"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    //compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:cardview-v7:22.1.1'
    compile 'com.android.support:recyclerview-v7:22.1.1'
    compile 'com.google.android.gms:play-services:7.3.0'
}

PlacesSample - 使用 Google Places API 的活动:

package com.sampath.project.project_v2;


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
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;


public class PlacesSample extends AppCompatActivity {
    TextView getLocation;
    int PLACE_PICKER_REQUEST = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_places_sample);
        getLocation = (TextView)findViewById(R.id.getLocTV);
        getLocation.setClickable(true);
        getLocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
                Intent intent;
                try {
                    intent = builder.build(getApplicationContext());
                    startActivityForResult(intent, PLACE_PICKER_REQUEST);
                    System.out.println("start activity for result");
                } catch (GooglePlayServicesRepairableException e) {
                    e.printStackTrace();
                } catch (GooglePlayServicesNotAvailableException e) {
                    e.printStackTrace();
                }

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_places_sample, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        System.out.println("onActivityResult");
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == RESULT_OK) {
                Place place = PlacePicker.getPlace(data, this);
                String toastMsg = String.format("Place: %s", place.getName());
                Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
            }
        }
    }
}

Logcat:

05-05 23:38:30.593  21408-21408/com.sampath.project.project_v2 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17e945c6 time:628772943
05-05 23:38:30.598  21408-21408/com.sampath.project.project_v2 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17e945c6 time:628772948
05-05 23:38:31.517  21408-21408/com.sampath.project.project_v2 I/Timeline﹕ Timeline: Activity_launch_request id:com.sampath.project.project_v2 time:628773867
05-05 23:38:31.527  21408-21408/com.sampath.project.project_v2 W/ResourceType﹕ For resource 0x01030224, entry index(548) is beyond type entryCount(9)
05-05 23:38:31.527  21408-21408/com.sampath.project.project_v2 W/ResourceType﹕ For resource 0x01030224, entry index(548) is beyond type entryCount(9)
05-05 23:38:31.636  21408-21408/com.sampath.project.project_v2 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@2daadb0a time:628773986
05-05 23:38:33.869  21408-21408/com.sampath.project.project_v2 I/System.out﹕ start activity for result
05-05 23:38:34.227  21408-21408/com.sampath.project.project_v2 I/System.out﹕ onActivityResult
05-05 23:38:34.235  21408-21408/com.sampath.project.project_v2 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@2daadb0a time:628776586

Francois Wouts 的解决方案帮助回答了这个问题。谢谢弗朗索瓦...

我用关键字“Places”搜索日志,发现 Places API 确实抛出了异常。它预计com.google.android.geo.API_KEY<application>Manifest.xml 中的标签。

我已经改为com.google.android.geo.API_KEY in the <activity>标签而不是<application> tag.

现在改为com.google.android.geo.API_KEY并从中删除了相同的行<activity>标签,并让它工作。感觉自己像个白痴,不自己解决这个问题。

元数据标签应读取android:name="com.google.android.geo.API_KEY"
它应该在<application>清单中的标签。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 地点选择器启动后立即关闭 的相关文章

  • 带身份验证的 MediaPlayer RTSP 视频流

    我能够在未经授权的情况下从网络摄像机流式传输视频 但现在我需要在授权的情况下执行此操作 我发现很少有信息表明 Android 不支持 RTSP 身份验证 但我发现另一条信息表明 通过使用该方法添加标头 可以在 API 级别 14 中实现身份
  • 如何捕获 Runnable 中的封闭范围

    我正在尝试对 a 进行一系列更新HandlerThread使用下面的类 但我有几个关于变量捕获在 Java 中如何工作的问题 1 Is ret通过引用从封闭范围捕获 2 Does this参考Runnable 或者是从封闭范围捕获的 bon
  • 如何增加 Gradle 守护进程的最大堆大小?

    签署 apk 时 我收到以下消息 To run dex in process the Gradle daemon needs a larger heap It currently has 1024 MB For faster builds
  • 无法禁用 Firestore 中的离线数据

    从我的数据中删除数据后Firestore Database 这需要我的Android app一段时间后才意识到数据已被删除 我认为这是由于自动数据缓存而发生的 我的应用程序与离线使用无关 我想禁用此功能 我已将其添加到我的自定义中Appli
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • Android 服务 START_STICKY START_NOT_STICKY

    我需要让我的服务始终在后台运行 并使用 startService 函数启动我的服务 无论应用程序的状态如何 我都不想重新启动服务 这是我的观察 START STICKY gt 如果应用程序启动 则服务正在重新启动 当应用程序关闭时 服务也会
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • Android 和 iOS 中的应用程序文件大小差异

    通过使用两个应用程序分发服务 Android 市场和 Apple 应用程序商店 我发现了一个谜团 Apple 应用程序的文件大小通常大于 Android 应用程序 我似乎找不到任何对这些差异的解释 而且这似乎是一个未触及的主题 我尝试过分配
  • Android:让用户从图库中选择图像或视频

    是否可以以这样的方式启动图库 以便同时显示图片和视频 Thanks 从图库中选择音频文件 Use MediaStore Audio Media EXTERNAL CONTENT URI Intent intent new Intent In
  • Android物理引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在研究了 3D 游戏编程之后 很快就明白了为什么物理引擎非常有用 Android 支持哪些物理引擎并且可以在 Android 上使用 关于
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • Android Studio 停留在构建 gradle 项目信息上

    我正在使用 Android Studio 2 3 每当我尝试创建一个新项目或打开某个项目时 它都会卡在此时 正在构建 Gradle 项目信息 请建议我一些解决方案 它可能正在下载 Gradle zip 文件 e g Users user g
  • 通过覆盖滑动调整图像大小不会调整图像大小

    我在用着Glide下载并显示图像 但是 当我尝试调整图像大小时 它不会这样做 我得到随机大小 或者可能是图像的实际大小 这是我用于通过 Glide 加载的代码 Glide with context load file getUrl asBi
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 测试应用内结算:“发布者无法购买此商品”

    我的应用程序似乎已准备好在我的设备上进行应用内购买程序的 现实生活 测试 但是 我在 Play 商店中收到 发布商无法购买此商品 的错误消息 现在 我应该如何测试这个 我不想通过仅用于测试的虚拟帐户重新安装手机来丢失手机的配置 在开发者控制
  • 如何以相同的意图从相机获取全尺寸图片和缩略图

    我一直需要找到这个问题的解决方案 我已经从这个社区搜索并测试了许多解决方案 但任何人都适合帮助我 我有两个活动 第一个活动拍摄一张照片并将其发送到另一个活动 该活动有一个 ImageView 来接收该照片 直到这里我遇到问题 以及一个在数据
  • 活动构建变体没有测试工件

    我基于 调试 构建变体创建了一个名为 bitrise 的新构建类型 使用 debug 构建变体时 经过检测的 androidTests 构建并运行良好 但是当我切换到新的 bitrise 构建变体时 出现以下错误 Process finis
  • 在自定义对话框中设置文本视图

    我创建了一个自定义对话框 但无法将文本设置到 java 对话框布局中的文本视图中 并且我的程序崩溃了 我的错误是什么 public class Total CBC extends Activity Override protected vo

随机推荐

  • 设置新配置后如何更新所有 spring 对象?

    怎么刷新之前的 Autowired动态配置更改后的 spring 对象 Here is my updateConfig method GenericApplicationContext context new GenericApplicat
  • 为什么在 C/C++ 中交织 switch/for/if 语句是有效的? [复制]

    这个问题在这里已经有答案了 我正在阅读boost asio coroutine hpp并且无法理解BOOST ASIO CORO REENTER和BOOST ASIO CORO YIELD的实现 的扩展形式为 reenter this yi
  • 在您自己的软件中使用 VBA

    我想在我的软件中使用 Visual Basic 我想知道它是否受版权保护 任何线索将不胜感激 谢谢 VBScript 很容易嵌入 VBA 需要许可证 这是添加 VBScript 作为宏语言的 VB6 VBA 代码 With ScriptCo
  • 如何从 vmware_guest_disk_facts 获取字典条目

    我正在尝试获取特定硬盘的数据存储名称 但我未能成功地找出列表中的选择条目 此输出来自 ansible 模块 vmware guest disk facts 我将此输出保存到名为 vm info 的变量中 guest disk facts 0
  • java.lang.Throwable:setStateLocked

    每次从其他 Activity 意图到 LoginActivity 时 都会使应用程序崩溃 错误的Logcat AccessibilityManager setStateLocked wasEnabled false mIsEnabled 假
  • 将文本字符串转换为电子表格中的公式

    我正在尝试开发一个交互式电子表格 为预算文件创建叙述 将会有多种选择 一旦用户选择了一个项目 它将帮助他们计算总数 我想设置它们填写的选项框 例如 将允许输入 B1 B4 四个单元格 我将为四个单元格分别命名 即 A B C D 在参考文档
  • 将整数数组映射到嵌套数组访问

    有没有一种方法可以使用本身存储在数组中的索引来动态访问嵌套数组 主数组 矩阵嵌套可以是可变的 例如2 4 100 Example my array 1 2 3 4 5 6 7 8 9 10 11 12 my array access usi
  • LESS 无声多行注释

    有没有办法创建silentLESS 中的多行注释 我想要与 comment 相同的行为 但对于多行字符串 正如 harry 已经明确指出的 x and clean css选项也会删除评论 从版本 2 开始 clean css 选项已移至插件
  • 如何在 JavaScript 中使用 toLocaleString() 和 tofixed(2)

    我怎样才能在 JavaScript 中做到这一点 var num 2046430 num toLocaleString will give you 2 046 430 我尝试过的是 var num 2046430 num toLocaleS
  • 带有 MAX(n.property) 的 Cypher 返回节点

    With Cypher 我试图返回得分最高的节点 然而 它要么只返回分数 而没有任何 id 到节点 我需要在查询中添加什么 start n node WHERE HAS n score return MAX n score 该解决方案应该为
  • 找不到 Oracle jdbc 驱动程序

    我对 java 和数据库连接很陌生 我正在尝试与 Oracle 数据库建立一个非常简单的连接 当我运行这段代码时 import java sql import oracle jdbc pool OracleDataSource public
  • Nodejs 上的 Javascript ES6:类型错误:对象不是构造函数

    我有这个样本班sync js作为我项目中某处的模块 use strict export default class Sync constructor dbConnection this dbConnection dbConnection t
  • jquery validator - 仅验证可见元素

    我有一个隐藏 显示 div 的单选按钮 所有可见元素都是 必需的 但是在验证规则之后添加ignore hidden 不起作用 这是代码
  • 将序列划分为唯一对的集合

    我需要一个 of 函数 它可以将序列分成对 然后将它们组合起来 以便组合中的所有元素都是唯一的 我已经尝试了多种使用 python 的 itertools 的方法 但还没有找到解决方案 为了说明这一点 我想要一个采用以下序列的函数 1 2
  • 使用 UserDefaults 保存图像数组

    我有一个应用程序 用户可以在其中拍照 拍照后应将其保存到UserDefaults 我不断收到此错误 cannot invoke setObject with an argument list of type UIImage type for
  • 如何获取android上每个cpu核心的使用情况

    我在 Android 上开发了一个小部件 它显示许多有用的信息 我正在尝试修改此方法以返回一个 cpu 核心的使用百分比 以便获得每个核心的使用百分比 在我的 HTC One X 上 我在 proc stat 中有 cpu 183549 1
  • 如何将 scikit-learn 数据集写入 csv 文件

    我可以从以下位置加载数据集scikit learn using from sklearn import datasets data datasets load boston print data 我想做的是将这个数据集写入一个平面文件 cs
  • 无法对实体框架 6 使用 MySQL 连接

    我正在尝试将实体框架 6 与 MySQL 一起使用 我确实为 Visual Studio 1 1 1 和 MySQL Net 连接器 6 8 3 安装了 MySQL 插件 问题是当我尝试创建新的 ADO NET 实体模型时 我无法选择 My
  • 为什么我不能在此三元运算中将 int 转换为字符串

    为了简洁起见 我留下了一些代码 int id Convert ToInt32 Page RouteData Values id var q db Categories SingleOrDefault x gt x categoryID id
  • Android 地点选择器启动后立即关闭

    我正在开发一个android应用程序作为项目的一部分 并使用Google地方API来根据位置显示感兴趣的地方 我正在使用 PlacePicker Inentbuilder 来完成此任务 但是 当应用程序运行时 地点选择器会启动 然后立即关闭