12

I am trying to call an activity from a library module in my application. I keep getting the error:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.nextgis.mobile/com.nextgis.mobile.activity.MainActivity}; have you declared this activity in your AndroidManifest.xml?

I am calling the activity as :

Intent intentGIS = new Intent(android.content.Intent.ACTION_VIEW);
intentGIS.setComponent(new ComponentName("com.nextgis.mobile",
                    "com.nextgis.mobile.activity.MainActivity"));
startActivity(intentGIS);

App manifest:

<?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.disarm.sanna.pdm">

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission-sdk-23 android:name="android.permission.WRITE_SETTINGS" />

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

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
<uses-permission android:name="android.permission.READ_SYNC_STATS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
<uses-permission android:name="android.permission.VIBRATE"/>


<!--
    <uses-permission android:name="android.permission.CAMERA"/>
-->

<uses-feature
    android:name="android.hardware.location"
    android:required="true"
    />
<uses-feature
    android:name="android.hardware.telephony"
    android:required="false"
    />
<uses-feature
    android:name="android.hardware.wifi"
    android:required="false"
    />
<!--
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false"
        />
    <uses-feature
        android:name="android.hardware.compass"
        android:required="false"
        />
-->


<supports-screens
    android:largeScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"
    android:normalScreens="true"
    android:xlargeScreens="true"
    android:resizeable="true"
    />

<application
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:node="replace">
    <activity
        android:name=".SplashActivity"
        android:windowSoftInputMode="stateHidden|adjustUnspecified"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <activity
        android:name="com.disarm.sanna.pdm.ShareActivity"
        android:label="@string/app_name">
    </activity>

    <activity android:name=".SelectCategoryActivity"
        android:label="@string/app_name">
    </activity>

    <activity android:name=".SocialShareActivity"
        android:label="@string/app_name">
    </activity>

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
    <activity
        android:name=".ActivityList"
        android:windowSoftInputMode="stateHidden|adjustPan"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
    </activity>
    <activity
        android:name=".Capture.Photo"
        android:theme="@style/AppCompatAlertDialogStyle"
        >
    </activity>
    <activity
        android:name=".Capture.Video"
        android:theme="@style/AppCompatAlertDialogStyle"
        >
    </activity>
    <activity
        android:label="Record Audio"
        android:name=".Capture.AudioCapture"
        android:theme="@style/Theme.AppCompat.Light.Dialog"
        >
    </activity>
    <activity
        android:label="@string/allow_setting"
        android:name=".WriteSettingActivity"
        android:theme="@style/AppTheme"
        >
    </activity>
    <service
        android:name=".Service.SyncService"
        android:enabled="true"
        android:exported="true" />
    <service android:name=".DisarmConnect.MyService" />
</application>
</manifest>

Library manifest:

<?xml version="1.0" encoding="utf-8"?>
<!--
~ Project:  NextGIS Mobile
~ Purpose:  Mobile GIS for Android.
~ Author:   Dmitry Baryshnikov (aka Bishop), bishop.dev@gmail.com
~ Author:   NikitaFeodonit, nfeodonit@yandex.com
~ Author:   Stanislav Petriakov, becomeglory@gmail.com
~      ******************************************************************************
~ Copyright (c) 2012-2016 NextGIS, info@nextgis.com
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program.  If not, see     <http://www.gnu.org/licenses/>.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.nextgis.mobile"
>



<application
    android:allowBackup="true"
    android:label="@string/app_name"
    >
    <activity
        android:name=".activity.MainActivity"
        android:label="@string/app_name"
        >
    </activity>

    <activity
        android:name=".activity.SettingsActivity"
        android:label="@string/action_settings"
        />

    <activity
        android:name=".activity.NGWSettingsActivityProxy"
        android:label="@string/ngw_settings"
        />

    <activity
        android:name=".activity.AboutActivity"
        android:label="@string/action_help"
        />

    <activity
        android:name=".activity.CreateVectorLayerActivity"
        android:label="@string/create_layer"
        android:screenOrientation="portrait"
        />

    <service
        android:name="com.nextgis.mobile.datasource.SyncService"
        >
        <intent-filter>
            <action
                android:name="android.content.SyncAdapter"
                />
        </intent-filter>
        <meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter"
            />
    </service>

    <provider
        android:name="com.nextgis.maplib.datasource.LayerContentProvider"
        android:authorities="com.nextgis.mobile.provider"
        android:exported="false"
        android:syncable="true"
        />

</application>

</manifest>

I have added compile project(':gisapp') in the gradle file for the module app. I know gradle does manifest merging automatically but I could be wrong.

What am I doing wrong here?

Note: This is the project which I am using as library.

j.developer
  • 474
  • 2
  • 5
  • 15
Arka Prava Basu
  • 2,366
  • 3
  • 18
  • 34
  • You have to add this line into your manifest file. `` – Ankita Shah Jan 04 '17 at 13:33
  • @AnkitaShah same result on adding this line to the app manifest. – Arka Prava Basu Jan 04 '17 at 13:39
  • You are including the library project in your app module which means you know its classes at the compile time, so what is stopping you from referencing it directly rather than via activity resolver. Are you sure the library's activity in the version that you included has the manifest declaration done right? – Kostek Nov 24 '22 at 17:30

0 Answers0