2015-09-10 56 views
1

我在Android Studio中遇到了一個錯誤,這讓我非常生氣。我有一個顯示標記的Google地圖應用程序。這一切運作良好,但後來我加了一個自定義標記視圖,以便將信息顯示在一個更好的方式,它開始給我這個錯誤,當我重新安裝了設備上的應用程序:Android Activity類不存在

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.rioma.mapaclientescercanos/.ActivityMaps } Error type 3 Error: Activity class {com.rioma.mapaclientescercanos/com.rioma.mapaclientescercanos.ActivityMaps} does not exist.

的事情是,該應用程序安裝正確,但它似乎沒有找到運行它的主要活動。我還有另一個應用程序,我試圖通過Intent啓動這個應用程序,之前正在工作,但現在不是。 我已經檢查了與軟件包名稱,應用程序ID有關的所有事情,嘗試重命名軟件包,將該項目複製到另一個新項目,但它根本不起作用。我第一次安裝應用程序時,它啓動正確,但第二次執行時出現錯誤。即使第一次嘗試從其他應用程序啓動它也不行。刪除自定義標記視圖並沒有幫助。 我已經嘗試了一些解決方案張貼在這裏,如this onethis other,但沒有工作。還嘗試更改compileSdk,targetSdk和buildTools版本而沒有結果。

發佈我的清單,並gradle.build:

的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.rioma.mapaclientescercanos.ActivityMaps" 
     android:label="asd" > 
     <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.maps.v2.API_KEY" 
     android:value="AIzaSyB2oRDZw3v5Jz7g7blNLMa-44PeCtywTcY"/> 

</application> 

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-feature android:glEsVersion="0x00020000" 
    android:required="true"/> 

Gradle.build:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "22.0.1" 
    defaultConfig { 
     applicationId 'com.rioma.mapaclientescercanos' 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.0.0' 
    compile 'com.android.support:support-v4:23.0.0' 
    compile 'com.google.android.gms:play-services:7.8.0' 
    compile 'com.google.maps:google-maps-services:0.1.7' 
    compile files('libs/jtds-1.2.8.jar') 
} 

希望你能幫助我,因爲我需要這個工作。

編輯:

歐凱,我發現這個問題有事情做與此代碼:

PackageManager p = getPackageManager(); 
    ComponentName componentName = new ComponentName(this, ActivityMaps.class); 
    p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

我需要這個應用程序沒有出現在應用程序抽屜,所以我說這段代碼。當我沒有這個代碼重新安裝時,它運行良好,但是現在我添加它,錯誤出來了。我將檢查是否有其他方法隱藏抽屜中的應用程序圖標。它可能與這個特定的代碼有關,可能會隱藏包名或其他東西。

+0

變化這一行機器人:名稱= 「com.rioma.mapaclientescercanos.ActivityMaps」 到機器人:名稱= 「ActivityMaps」 – Nithinlal

+0

ASLO清單文件包名稱是 包= 「com.rioma.mapaclientescercanos」> – Nithinlal

+0

* I需要此應用程序不會出現在應用程序抽屜中*什麼是應用程序抽屜? –

回答

2

在你的gradle文件中,你必須保持相同的SDK級別,構建工具和支持/ appcompat庫,以避免奇怪的行爲。在使用構建工具22時,請嘗試更改compileSdkVersion 21至22以及support-v4。

note Appcompat-v7包含support-v4,所以你不需要添加它。

+0

應該是23,因爲他使用的是com.android.support:support-v4:23 –

+0

啊是的,他的gradle文件真的不一致 – xiaomi

+0

'appcompat-v7'包含'support-v4?'中的所有內容?你確定嗎? –

0

AndroidManifest.xml文件改變這一行android:name="com.rioma.mapaclientescercanos.ActivityMaps"android:name=".ActivityMaps"

1

最後我有一個辦法隱藏應用程序圖標沒有它拋出任何錯誤。 在我的清單我只是簡單地刪除我的主要活動的類別行:

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

像這樣:

<activity 
     android:name=".ActivityMaps" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </activity> 

這樣一來,我可以通過意向從另外一個啓動這個應用程式,加上幾行代碼:

ComponentName lComponentName= new ComponentName("com.rioma.mapaclientescercanos", "com.rioma.mapaclientescercanos.ActivityMaps"); 
        Intent launchIntent = new Intent(Intent.ACTION_MAIN); 
        launchIntent.setComponent(lComponentName); 
        launchIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

完全像這樣工作。 無論如何回覆。

+0

這正是我想要的,但它拋出以下錯誤:無法找到顯式活動類{..};你有沒有在你的AndroidManifest.xml中聲明這個活動?我想從另一個應用程序運行隱藏的應用程序。我用startActivity運行隱藏的應用程序 –