2017-07-11 2 views
0

Hallo, ich versuche Google Maps in meinem Android-Fragment anzuzeigen. Ich habe alles gut gemacht, aber ich weiß nicht, wo dieser Fehler herkommt. Ich habe versucht, verschiedene Dinge zu ändern, hat aber überhaupt nicht funktioniert. Unten ist der Code.Laufzeit Ausnahme von Android Absturz der App

package com.example.nadeemahmad.guitest; 
 

 
import android.app.Dialog; 
 
import android.content.Intent; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.view.View; 
 
import android.view.Window; 
 
import android.view.WindowManager; 
 
import android.widget.ImageButton; 
 
import android.widget.Toast; 
 

 
import com.google.android.gms.common.ConnectionResult; 
 
import com.google.android.gms.common.GoogleApiAvailability; 
 
import com.google.android.gms.common.api.GoogleApiClient; 
 
import com.google.android.gms.maps.GoogleMap; 
 
import com.google.android.gms.maps.MapFragment; 
 
import com.google.android.gms.maps.OnMapReadyCallback; 
 

 
public class profile extends AppCompatActivity implements OnMapReadyCallback { 
 
    GoogleMap googleMap; 
 
    ImageButton pr_img_btn; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_profile); 
 
     //AIzaSyAjxQKEZc9MHTH3f173Iv21Gw2c6IeUX2U 
 
     pr_img_btn = (ImageButton) findViewById(R.id.pr_img_btn); 
 
     pr_img_btn.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View view) { 
 
       Intent i = new Intent(profile.this,settings.class); 
 
       startActivity(i); 
 
      } 
 
     }); 
 

 
     if(googleServicesAvailble()){ 
 
      Toast.makeText(profile.this,"Perfect!!!",Toast.LENGTH_LONG).show(); 
 
      initMap(); 
 
     } 
 

 
    } 
 

 
    private void initMap() { 
 
     MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFrag); 
 
     mapFragment.getMapAsync(this); 
 
    } 
 

 
    public boolean googleServicesAvailble(){ 
 
     GoogleApiAvailability gpa = GoogleApiAvailability.getInstance(); 
 
     int avail = gpa.isGooglePlayServicesAvailable(this); 
 
     if(avail == ConnectionResult.SUCCESS){ 
 
      return true; 
 
     } else if(gpa.isUserResolvableError(avail)){ 
 
      Dialog dialog = gpa.getErrorDialog(this,avail,0); 
 
      dialog.show(); 
 
     } else{ 
 
      Toast.makeText(profile.this,"Can't connect to play store",Toast.LENGTH_LONG).show(); 
 
     } 
 
     return false; 
 
    } 
 

 
    @Override 
 
    public void onMapReady(GoogleMap Map) { 
 
     googleMap = Map; 
 
    } 
 

 
}

Im Folgenden finden Sie die Manifest-Datei für Berechtigungen. Und die Metadaten und Metadaten. Alles funktioniert gut und hat keine Fehler.

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

 
    <!--Permissions--> 
 

 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
 
    <uses-permission android:name="android.permission.INTERNET" /> 
 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
 
    <permission android:name="com.example.nadeemahmad.guitest.MAPS.RECIEVE" android:protectionLevel="signature"/> 
 
    <uses-permission android:name="com.example.nadeemahmad.guitest.MAPS.RECIEVE"/> 
 
    <uses-permission android:name="com.google.android.providers.gsf.permissions.READ_GSERVICES"/> 
 
    <uses-feature android:glEsVersion="0x0020000" android:required="true"/> 
 

 

 

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

 
       <category android:name="android.intent.category.LAUNCHER" /> 
 
      </intent-filter> 
 
     </activity> 
 
     <activity 
 
      android:name=".MainActivity" 
 
      android:noHistory="true" /> 
 
     <activity 
 
      android:name=".profile" 
 
      android:noHistory="true" /> 
 
     <activity 
 
      android:name=".profile_update" 
 
      android:noHistory="true" /> 
 
     <activity 
 
      android:name=".sync_contacts" 
 
      android:noHistory="true" /> 
 
     <activity 
 
      android:name=".settings" 
 
      android:noHistory="true" /> 
 
     <activity android:name=".synced_contacts_list"></activity> 
 
    </application> 
 

 
    <meta-data 
 
     android:name="com.google.android.maps.v2.API_KEY" 
 
     android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" /> 
 

 
    <meta-data android:name="come.google.gms.version" android:version="8487000"/> 
 

 
</manifest>

Dies ist die Ausnahme von mir gezeigt!

07-11 10:05:20.044 12147-12147/com.example.nadeemahmad.guitest E/AndroidRuntime: FATAL EXCEPTION: main 
 
                       Process: com.example.nadeemahmad.guitest, PID: 12147 
 
                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nadeemahmad.guitest/com.example.nadeemahmad.guitest.profile}: android.view.InflateException: Binary XML file line #70: Binary XML file line #70: Error inflating class fragment 
 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) 
 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) 
 
                        at android.app.ActivityThread.-wrap14(ActivityThread.java) 
 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631) 
 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
 
                        at android.os.Looper.loop(Looper.java:154) 
 
                        at android.app.ActivityThread.main(ActivityThread.java:6682) 
 
                        at java.lang.reflect.Method.invoke(Native Method) 
 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
 
                        Caused by: android.view.InflateException: Binary XML file line #70: Binary XML file line #70: Error inflating class fragment 
 
                        Caused by: android.view.InflateException: Binary XML file line #70: Error inflating class fragment 
 
                        Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml 
 
                        at com.google.maps.api.android.lib6.drd.q.b(:com.google.android.gms.DynamiteModulesB:39) 
 
                        at com.google.maps.api.android.lib6.auth.e.a(:com.google.android.gms.DynamiteModulesB:12) 
 
                        at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms.DynamiteModulesB:121) 
 
                        at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms.DynamiteModulesB:25) 
 
                        at com.google.android.gms.maps.internal.g.onTransact(:com.google.android.gms.DynamiteModulesB:35) 
 
                        at android.os.Binder.transact(Binder.java:507) 
 
                        at uni.newMapFragmentDelegate(:com.google.android.gms:1) 
 
                        at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms:1) 
 
                        at unh.onTransact(:com.google.android.gms:13) 
 
                        at android.os.Binder.transact(Binder.java:507) 
 
                        at com.google.android.gms.internal.zzed.zza(Unknown Source) 
 
                        at com.google.android.gms.maps.internal.zzf.zzH(Unknown Source) 
 
                        at com.google.android.gms.maps.MapFragment$zzb.zzwg(Unknown Source) 
 
                        at com.google.android.gms.maps.MapFragment$zzb.zza(Unknown Source) 
 
                        at com.google.android.gms.dynamic.zza.zza(Unknown Source) 
 
                        at com.google.android.gms.dynamic.zza.onInflate(Unknown Source) 
 
                        at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source) 
 
                        at android.app.Fragment.onInflate(Fragment.java:1419) 
 
                        at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2314) 
 
                        at android.app.FragmentController.onCreateView(FragmentController.java:99) 
 
                        at android.app.Activity.onCreateView(Activity.java:6080) 
 
                        at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:41) 
 
                        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75) 
 
                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:784) 
 
                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734) 
 
                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:865) 
 
                        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 
 
                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:873) 
 
                        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 
 
                        at android.view.LayoutInflater.inflate(LayoutInflater.java:525) 
 
                        at android.view.LayoutInflater.inflate(LayoutInflater.java:427) 
 
                        at android.view.LayoutInflater.inflate(LayoutInflater.java:378) 
 
                        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289) 
 
                        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
 
                        at com.example.nadeemahmad.guitest.profile.onCreate(profile.java:27) 
 
07-11 10:05:20.044 12147-12147/com.example.nadeemahmad.guitest E/AndroidRuntime:  at android.app.Activity.performCreate(Activity.java:6942) 
 
                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880) 
 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) 
 
                        at android.app.ActivityThread.-wrap14(ActivityThread.java) 
 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631) 
 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
 
                        at android.os.Looper.loop(Looper.java:154) 
 
                        at android.app.ActivityThread.main(ActivityThread.java:6682) 
 
                        at java.lang.reflect.Method.invoke(Native Method) 
 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

Antwort

0

Wenn Sie den Fehler lesen, werden Sie wissen, dass Verursacht durch: java.lang.RuntimeException: API-Schlüssel nicht gefunden. Überprüfen Sie, ob es sich um das Element von AndroidManifest.xml handelt

Ändern Sie in Ihrem Manifest com.google.android.geapi.v2.API_KEY in com.google.android.geo.API_KEY und versuchen Sie es.

0

Wie ich in der Protokoll verpasst API-Schlüssel Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

setzen Sie diese Zeile innerhalb Meta-Daten innerhalb der Anwendung Tag

<application 
    ... 
    ...> 
    ... 
    <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" /> 

    <meta-data android:name="come.google.gms.version" 
    android:version="8487000"/> 
    ... 
</application> 
+0

** Dies ist der Fehler jetzt sehen kann! ** Installation fehlgeschlagen mit Meldung INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Fehler beim Parsen während installPackageLI: /data/app/vmdl1158636114.tmp/base.apk (unter Binär-XML-Dateizeile # 84): erfordert einen android: Wert oder android: Ressourcenattribut. Es ist möglich, dass dieses Problem gelöst wird, indem eine vorhandene Version der apk, falls vorhanden, deinstalliert und anschließend neu installiert wird. WARNUNG: Durch das Deinstallieren werden die Anwendungsdaten entfernt! Möchten Sie die vorhandene Anwendung deinstallieren? –