Place Picker在Alpha测试中崩溃,但在Android Studio中没有崩溃

时间:2019-04-12 14:36:32

标签: android google-places-api google-places

我遇到了一个我真的无法解决的问题! 我的应用程序可以很好地在开发环境中正常工作,无论是在Android Studio模拟器上还是在我用于预测试的手机(荣誉8)上,但是在Google Play上创建Alpha测试后,都会出现以下错误:

我按下按钮以启动Picker Place,他激活了自己,但是一会儿他关闭,不允许您选择您所在的位置,这个问题在开发和个人的任何时刻都从未发生过因为它已加载到我的手机上,所以在我的手机上也进行了测试。 老实说,我的API密钥已使用了1年以上,但是由于个人问题,我无法继续开发,您是否认为这可能会干扰API的正确APK操作?

在Google API信息中心中检查密钥是否有效并且有效。

在这里,我报告我的清单和用于调用我的扑克的代码:

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.miapp.miapp">
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <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"
        android:fullBackupContent="true"
        tools:ignore="GoogleAppIndexingWarning">
        <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="@ApiKey" />
        <activity android:name=".Find_Place">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

致电扑克玩家:

placeNameText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.v(TAG, "Find_Place:placeNameText.setOnClickListener: OnCreate : Ho cliccato la mia Text");

                //Richiamo il costruttore del mio Piker
                Log.v(TAG, "Find_Place:placeNameText.setOnClickListener: Start....... Richiamo il Piker con IntentBuilder....");
                IntentBuilder builder = new IntentBuilder();
                try {
                    Intent intent = builder.build(Find_Place.this);
                    Log.v(TAG, "Find_Place: OnCreate : Builder : Start....... Lancio il mio builder nell'activity....");
                    startActivityForResult(intent, PLACE_PICKER_REQUEST);
                    Toast.makeText(getApplicationContext(), "Sto chiamando il piker ed attendendo il risultato", Toast.LENGTH_LONG).show();
                } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
                    e.printStackTrace();
                    String message;
                    message = e.getMessage();
                    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
                    Log.v(TAG, "Find_Place: OnCreate : Builder : C'è stato un errore .... " + e);
                }

            }
        });

我检查结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //  Popolo la mia texviView con i miei dati
    Toast.makeText(getApplicationContext(),"Sono nel onActivityResult ",Toast.LENGTH_LONG).show();
    Log.v(TAG,"Find_Place: OnCreate : onActivityResult : Gestisco il risultato del Piker  .... " );
    if (requestCode== PLACE_PICKER_REQUEST)
    {
        Toast.makeText(getApplicationContext(),"Sono nel onActivityResult: requestCode== PLACE_PICKER_REQUEST" + PLACE_PICKER_REQUEST,Toast.LENGTH_LONG).show();
        Log.v(TAG, "Find_Place:onActivityResult: Valore del requestCode== PLACE_PICKER_REQUEST " + PLACE_PICKER_REQUEST);
        if (resultCode == RESULT_OK) {
            Toast.makeText(getApplicationContext(),"Sono nel onActivityResult: resultCode == RESULT_OK",Toast.LENGTH_LONG).show();
            Log.v(TAG, "Find_Place:onActivityResult: Valore del resultCode........." + resultCode);
        Place place = PlacePicker.getPlace(Find_Place.this, data);

我无法添加错误日志,因为即使从google play控制台中也没有崩溃。 如果您能帮助我,我真的不明白问题是什么! 在我在那里时,我添加了一个问题,根据您的说法,这可能会导致我将所有进程都插入到onActivityResult中的问题,因此,如果未激活Picker,就无法继续?

谢谢大家的帮助

1 个答案:

答案 0 :(得分:0)

最后,我设法自己解决了问题,并在下面写下了解决方案,以帮助发现相同问题的任何人。 产生问题的原因是我们创建了一个api键,该键将要插入到我们的代码中,但仅用作测试键。当我们创建ALPHA或BETA时,Google Play控制台会自动生成一个API密钥,并将其与在创建APP时生成的API密钥一起插入我们的GOOGLE DEVELOPERS CONSOLE中,这将使我们能够使用开发版本中的应用程序。 重要 应该添加新的API密钥,而不是用旧的API密钥代替,否则将无法在开发环境中使用该API。

我希望它会有用。