2017-07-11 76 views
0

嗨我試圖在我的android片段中顯示谷歌地圖。我做得很好,但我不知道這個錯誤來自哪裏。我試圖改變不同的東西,但根本不適合我,下面是代碼。Android崩潰應用程序的運行時異常

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; 
 
    } 
 

 
}

下面是權限清單文件。元數據和元數據也是如此。一切工作正常,沒有任何錯誤。

<?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>

這是證明我的異常!

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)

回答

0

如果你讀了錯誤,你會知道, 產生的原因:了java.lang.RuntimeException:API密鑰未找到。檢查AndroidManifest.xml中的元素

請在您的清單中將com.google.android.maps.v2.API_KEY更改爲com.google.android.geo.API_KEY並嘗試。

0

,我可以在你的日誌中看到你錯過了API密鑰 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

把裏面的元數據,該行應用程序標記中

<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

**這是錯誤吧! ** 安裝失敗並顯示消息INSTALL_PARSE_FAILED_MANIFEST_MALFORMED:在installPackageLI過程中失敗解析:/data/app/vmdl1158636114.tmp/base.apk(位於二進制XML文件行#84):需要android:value或android:資源屬性。 有可能通過卸載現有版本的apk(如果存在)然後重新安裝來解決此問題。 警告:卸載將刪除應用程序數據! 是否要卸載現有的應用程序? –