29

I have a serious problem with my self developed app.

Long Story:

I have created an app and developed it on my desktop pc. Because I need to show it to my customer, I decided to install android studio on my Notebook and try the app there. I imported the project on my Notebook and started Android Studio, I ran the project, the app started and worked like always on my smartphone but......when I went back to the homescreen the Icon was missing (while on my desktop pc version was shown) and it wasn't even in the app list, but if I go on "Settings" --> "Manage applications", it's shown there, I can unistall or stop it, but because I don't have an icon I can't start it again if I don't rerun the app with Android Studio. I went back to my desktop pc and tried to rerun the app from there, but nothing changed the icon is still missing.

Short Story: After reinstalling my app on my phone with android studio from my notebook, the app icon is missing from the home screen and application list, but I can see it in "Settings" --> "Manage applications". If I go back to my original pc where I developed the app and try to rerun it, the result is the same...icon missing.

I read all the post that are similar to my problem on Stackoverflow, but nothing helped me to resolve it. I hope that someone can help me about it.

I posted the AndroidManifest.xml if needed but I can't post all the code because of privacy/copyright, sorry. I tried to write in the most correct english I could, I apologize in advance if my writing is horrible.

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

<uses-sdk
    android:minSdkVersion="12"
    android:targetSdkVersion="22" />

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SMS_DELIVER_ACTION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- <uses-permission android:name="android.permission.BROADCAST_SMS" /> -->
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_bt"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SENDTO" />

            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".RecMex"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BROADCAST_SMS" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

    <!-- BroadcastReceiver that listens for incoming MMS messages -->

    <receiver
        android:name=".MmsReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BROADCAST_WAP_PUSH" >
        <intent-filter>
            <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />

            <data android:mimeType="application/vnd.wap.mms-message" />
        </intent-filter>
    </receiver>

    <!-- Activity that allows the user to send new SMS/MMS messages -->

    <activity
        android:name=".ComposeSmsActivity"
        android:label="@string/title_activity_compose_sms" >
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SENDTO" />

            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </activity>

    <!-- Service that delivers messages from the phone "quick response" -->

    <service
        android:name=".HeadlessSmsSendService"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" >
        <intent-filter>
            <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />

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

            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </service>

    <!-- BroadcastReceiver that listens for incoming SMS messages -->
    <receiver
        android:name=".SmsReceiver"
        android:permission="android.permission.BROADCAST_SMS" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_DELIVER" />
        </intent-filter>
    </receiver>

    <activity
        android:name=".DeviceListActivity"
        android:label="@string/intestazione"
        android:theme="@android:style/Theme.Holo.Dialog"
        >
    </activity>


</application>

Dango
  • 311
  • 1
  • 4
  • 7

4 Answers4

121

It is happening because you passed everything into one intent filter. Try to separate them per use case or at least separate Launcher and Main filter.

Like this:

<intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <action android:name="android.intent.action.SEND" />
        <action android:name="android.intent.action.SENDTO" />

        <data android:scheme="sms" />
        <data android:scheme="smsto" />
        <data android:scheme="mms" />
        <data android:scheme="mmsto" />
</intent-filter>
Michał Hawryszko
  • 1,376
  • 1
  • 9
  • 9
13

Adding different intent filter can solve your problem

<activity
            android:name=".activities.SplashActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW"></action>
                <category android:name="android.intent.category.DEFAULT"></category>
                <category android:name="android.intent.category.BROWSABLE"></category>
                <data android:host="example.com"></data>
                <data android:scheme="http"></data>
                <data android:pathPattern="/.*"></data>

            </intent-filter>

        </activity>
Archa
  • 176
  • 1
  • 7
1

I had the same problem but the solutions above did not work for me. I had to remove the label attribute to make it appear on the screen again.

Before the MainActivity looked like this:

<activity
        android:name=".HomeTabs.NavigationHome"
        android:label="@string/title_activity_navigation_home">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

and afterwards like this:

<activity
        android:name=".HomeTabs.NavigationHome"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Dharman
  • 30,962
  • 25
  • 85
  • 135
Felix Hegg
  • 367
  • 2
  • 14
0

If you're already sure that you have correctly defined your app logo, problem would be using android:scheme inside of launcher activity. See below post:

https://stackoverflow.com/a/8134686/2231702

Community
  • 1
  • 1
Kerem
  • 1,494
  • 2
  • 16
  • 27
  • I don't think is that the problem, because it was working fine on my desktop pc and the code on the notebook is the same (copy pasted) from my desktop pc :/ – Dango Oct 13 '15 at 08:56