can I Call startSearch from a nonSearchable activity - Android? - android

I have one activity I want to use for all search results for an app. If I call startSearch(..) from another activity I do not see the intent at all. If I call the function from the searchable activity it seems to work. I kind of suspect my manifest: Am I missing something?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wfs.android.youtubelistoptimizerforandroid" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.NETWORK" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<!-- enable the search dialog to send searches to SearchableActivity -->
<meta-data android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
<activity
android:name="com.wfs.android.youtubelistoptimizerforandroid.MainActivity"
android:configChanges="orientation|screenSize"
android:label="#string/app_name" >
<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.SEARCH" />
</intent-filter>
</activity>
<service
android:name="com.wfs.android.youtubelistoptimizerforandroid.UploadService"
android:exported="true" />
<activity
android:name="com.wfs.android.youtubelistoptimizerforandroid.PlayActivity"
android:label="#string/title_activity_play"
android:parentActivityName="com.wfs.android.youtubelistoptimizerforandroid.MainActivity" />
<activity
android:name="com.wfs.android.youtubelistoptimizerforandroid.ReviewActivity"
android:label="#string/title_activity_review"
android:parentActivityName="com.wfs.android.youtubelistoptimizerforandroid.MainActivity" />
<activity android:name=".SearchActivity"
android:launchMode="singleTop"
android:label="#string/title_activity_search">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="#xml/searchable"/>
</activity>
</application>

This change to the manifest fixed me: it needs the full name of the class to pass the search intent to.
<!-- enable the search dialog to send searches to SearchableActivity -->
<meta-data android:name="android.app.default_searchable"
android:value="com.wfs.android.youtubelistoptimizerforandroid.SearchActivity" />
This is from the Google documentation:
<!-- enable the search dialog to send searches to SearchableActivity -->
<meta-data android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
</activity>

Related

'android:exported' property not set error despite having it set in android manifest

This is the error i get when i try to submit app to play store.
"You uploaded an APK or Android App Bundle which has an activity, activity alias, service or broadcast receiver with intent filter, but without 'android:exported' property set. This file can't be installed on Android 12 or higher. See: developer.android.com/about/versions/12/behavior-changes-12#exported"
This is my androidmanifest.xml file, i had set android:exported to true each time, but still its throwing this error, could someone please check and see what can be done to eliminate this error, here is my manifest file:
<?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.xxx.xxx">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<application
android:name="com.xxx.xxx.AppController"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="#style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name="com.xxx.xxx.activity.SplashActivity"
android:noHistory="true"
android:theme="#style/Splash" />
<activity
android:name="com.xxx.xxx.activity.MainActivity"
android:label="">
</activity>
<activity android:name="com.xxx.xxx.activity.VPNListActivity" />
<activity
android:name="com.xxx.xxx.activity.VPNInfoActivity"
android:launchMode="singleTop" />
<activity
android:name="com.xxx.xxx.activity.SettingsActivity"
android:label="#string/action_settings"
android:noHistory="true" />
<service
android:name="de.blinkt.openvpn.core.OpenVPNService"
android:permission="android.permission.BIND_VPN_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
</service>
<activity
android:name="com.xxx.xxx.activity.SpeedTestActivity"
android:label="Speed Test" />
<activity
android:name="com.xxx.xxx.activity.TOSActivity"
android:theme="#style/AppTheme2" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="#android:style/Theme.Translucent" />
<activity
android:name="com.xxx.xxx.activity.StepActivity"
android:theme="#style/Splash">
</activity>
<activity android:name="com.xxx.xxx.activity.FragmentWrapperActivity" />
<activity android:name="com.xxx.xxx.activity.WelcomeActivity"
android:theme="#style/AppThemes"
android:exported="true">
<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.gms.version"
android:value="#integer/google_play_services_version" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="#string/admob_app_id" />
<receiver android:name="com.xxx.xxx.service.BoostAlarm" />
</application>
</manifest>
Please Note: I had set the package name to xxx.xxx. When i had submitted it to play store i submitted it with correct name.

default robot icon instead of app icon after installation

I made my android app but when I install it on Anroid 6 my app has default robot icon instead my original app icon. But when I install the same app on device with android 4.4.2, my app icon is ok.
Any idea please what could be wrong? (I have already tried to remove app icon from android 6 desktop and make new shortcut but installed app in app list has the same robot icon)
UPDATE, added AndroidManifest.xml:
<?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.example.myapp" >
<uses-permission android:name="sk.baris.b_admin.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- SYNC -->
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<application
android:name="com.example.myapp.MainApplication"
tools:replace="android:name"
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/BASE_ACTION_BAR" >
<activity
android:name="com.example.myapp.menu.MenuActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="org.acra.CrashReportDialog"
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"
android:launchMode="singleInstance"
android:theme="#style/Theme.AppCompat.Base.CompactMenu.Dialog" />
<receiver
android:name=".InternetConnectionReciever"
android:exported="true" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<service
android:name=".service.VolleyService"
android:exported="false" />
<provider
android:name=".provider.Provider"
android:authorities="com.example.myapp.provider"
android:exported="false"
android:syncable="true" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="#xml/file_paths"></meta-data>
</provider>
<!-- SyncAdapter -->
<service
android:name="com.example.myapp.syncadapter.SyncService"
android:exported="true"
android:process=":sync" >
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="#xml/syncadapter" />
</service>
<service
android:name="com.example.myapp.syncadapter.AuthenticatorService"
android:exported="true" >
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="#xml/authenticator" />
</service>
<service android:name="com.example.myapp.service.handler.HandlerSync" />
</application>
</manifest>
You need to set the activity icon
<activity
android:icon="#drawable/ic_launcher"
android:name="com.example.myapp.menu.MenuActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Did you place your custom icon in the drawable-xxhdpi folder too?
if no then place it ,clean and reinstall ur app
set icon to #mipmap/ic_launcher, not to #drawable/ic_launcher
Had similar issue.
Solution was to
Remove background from ic_launcher.xml
In my case it was empty anyway but caused this error

Android Error: Default Activity not found

I have a launcher activity but android studio says "Default activity not found". This started after I added a login activity which I wanted it to be the launcher activity (meant for when the user signs up only). So I would like the Main activity to be the launcher activity once the user installs my app and provide their credentials. Your help is much appreciated.
This is my manifest with both my login and main activities.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="22" />
<library />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.BATTERY_STATS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS" />
<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="mypackage.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="otherpackage.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<permission
android:name="mypackage.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<permission
android:name="com.google.android.c2dm.permission.RECEIVE"></permission>
<permission
android:name="otherpackage.permission.C2D_MESSAGE"
android:protectionLevel="signature"></permission>
<application
android:allowBackup="true"
android:icon="#drawable/image"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key"/>
<Activity
android:name=".Login"
android:label="REGISTER"
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:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAINACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</Activity>
<Activity
android:name=".MapActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAPACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</Activity>
<!--<activity
android:name=".MyMapActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MYMAPACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>-->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!--Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!--this is to support pre KitKat -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="mypackage" />
<category android:name="otherpackage" />
</intent-filter>
</receiver>
<receiver android:name=".MapActivity$ResponseReceiver">
<intent-filter>
<action android:name="mypackage.MapActivity.ResponseReceiver.ACTION_RESP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service
android:name=".MapActivity$MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".Login$MyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<service android:name="mypackage.RegistrationIntentService"></service>
<service
android:name=".FetchAddressIntentService"
android:exported="false"/>
</application>
</manifest>
This is the main activity.
public class MainActivity extends MapActivity {
#Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
#Override
public void run() {
Intent i = new Intent(MainActivity.this, MapActivity.class);
startActivity(i);
}
}, 8000);
}
}
N.B The main activity extends my MapActivity, which extends FragmentActivity. It is starnge but I found this in logcat. I haven't implemented iheartradio library or anything. "Caused by: java.lang.ClassNotFoundException: com.clearchannel.iheartradio.alarm.LiveDeltaUpdateService"
change Activity to activity in manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="22" />
<library />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.BATTERY_STATS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS" />
<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="mypackage.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="otherpackage.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<permission
android:name="mypackage.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<permission
android:name="com.google.android.c2dm.permission.RECEIVE"></permission>
<permission
android:name="otherpackage.permission.C2D_MESSAGE"
android:protectionLevel="signature"></permission>
<application
android:allowBackup="true"
android:icon="#drawable/image"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key"/>
<activity
android:name=".Login"
android:label="REGISTER"
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:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAINACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".MapActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAPACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!--<activity
android:name=".MyMapActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MYMAPACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>-->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!--Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!--this is to support pre KitKat -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="mypackage" />
<category android:name="otherpackage" />
</intent-filter>
</receiver>
<receiver android:name=".MapActivity$ResponseReceiver">
<intent-filter>
<action android:name="mypackage.MapActivity.ResponseReceiver.ACTION_RESP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service
android:name=".MapActivity$MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".Login$MyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<service android:name="mypackage.RegistrationIntentService"></service>
<service
android:name=".FetchAddressIntentService"
android:exported="false"/>
</application>
</manifest>
You have a typo. <activity>, not <Activity>
A full AndroidManifest must contain the tag and the inside it.
You must declare the Activity with its fully qualified class name, and the package declaration can be ommited with a dot (.) if the Activity is inside the package of the application (declared at manifest.package attribute)
Such:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com."
android:versionCode="1"
android:versionName="2.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="false"
android:xlargeScreens="true" />
<application
android:name=".BvApplication"
android:hardwareAccelerated="true"
android:largeHeap="true"
android:icon="#drawable/icon"
android:label="#string/app_name" >
<activity
android:name=".BvNewsstandActivity"
android:launchMode="singleTop"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" >
</activity>
<activity
android:name=".LoginActivity"
android:label="#string/app_name"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="br.com.digitalpages.reader.activity.HelpActivity"
android:theme="#style/Transp" />
<activity
android:name="br.com.digitalpages.reader.ReaderActivity"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="br.com.digitalpages.commons.activity.LoadingActivity"
android:theme="#android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
android:name="br.com.digitalpages.commons.activity.WebActivity"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
</application>
PS: You MUST read the stack trace generated from the error while running the application, you can use the logcat window at Eclipse or Android Studio or the Android Device Monitor included in the Android SDK installation.
You can try this:
File->Invalidate Caches->Restart
Simply deleting the .gradle folder in C://Users/username did it for me. Invalidating caches etc didn't.

Android Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

I am making an application, when I run that application I am getting following error during running.
[2015-06-19 17:11:06 - Ecommerce] Installation error:
[2015-06-19 17:11:06 - Ecommerce] Please check logcat output for more details.
[2015-06-19 17:11:06 - Ecommerce] Launch canceled!
I don't know where I am doing wrong, I saw so many solutions but that does not match to my problem. Here is my Manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ecommerce.app"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
/>
<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="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission
android:name="com.ecommerce.app.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission
android:name="com.ecommerce.app.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<receiver
android:name="com.ecommerce.app.utils.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.ecommerce.app" />
</intent-filter>
</receiver>
<service android:name="com.ecommerce.app.utils.GCMIntentService" />
<activity
android:name="com.ecommerce.app.SplashscreenActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.ecommerce.app.MainActivity" />
<activity android:name="com.ecommerce.app.ShoppingCartActivity" />
<activity android:name="com.ecommerce.app.AuthenticateActivity" />
<activity android:name="com.ecommerce.app.BranchLocationActivity" />
<activity android:name="com.ecommerce.app.ProfileActivity" />
<activity android:name="com.ecommerce.app.VoucherActivity" />
<activity android:name="com.ecommerce.app.EShopFragmentActivity" />
<activity android:name="com.ecommerce.app.EShopDetailActivity" />
<activity android:name="com.ecommerce.app.PaypalActivity" />
<activity android:name="com.ecommerce.app.FeedbackActivity" />
<activity android:name="com.ecommerce.app.LoyaltyActivity" />
<activity android:name="com.ecommerce.app.VoucherDisplayActivity" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<receiver
android:name="com.ecommerce.app.utils.GcmBroadcastReceiver"
android:process=":remote" >
</receiver>
<meta-data android:name="com.google.android.gms.version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="#string/map_key" />
</application>
</manifest>
Try specifying google play services version in meta-data
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
From google maps doc-https://developers.google.com/maps/documentation/android/start
Edit your application's AndroidManifest.xml file, and add the
following declaration within the element. This embeds
the version of Google Play services that the app was compiled with.

Google Play Store - Find out why a device is incompatible

I published an android app in google playstore. Some clients complain about not being able to download the app as the play stores says it is "not compatible".
In google developer console, I can only see THAT a device is not supported. I want to know WHY a device is incompatible but that information is hidden from me.
Google has to have this information to determine compatibility, why is there no way to show this information to developers? Or am I wrong?
We'd really appreciate that feature, it is vital I think.
One device that fails, is for example: medion lifetab e10315
http://www.amazon.de/Medion-LIFETAB-Tablet-PC-Android-schwarz/dp/B00HA4M91W
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.example.changed.android2"
android:installLocation="auto"
android:versionCode="1"
android:versionName="xxx" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="18" />
<!-- Only this application can receive the messages and registration result -->
<permission
android:name="de.example.changed.android2.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<permission
android:name="de.example.changed.android2.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<!-- Required permission to check licensing. -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="de.example.changed.android2.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<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.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="de.example.changed.android2.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--in app paying-->
<uses-permission android:name="com.android.vending.BILLING" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" >
</supports-screens>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="false" />
<!-- suppress AndroidDomInspection -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:label="Tests for xxx"
android:targetPackage="de.example.changed.android2" />
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:name=".xxxApp"
android:allowBackup="false"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/Theme.xxx" >
<uses-library android:name="com.google.android.maps" />
<uses-library android:name="android.test.runner" />
<receiver
android:name=".services.C2DMReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="de.example.changed.android" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="de.example.changed.android" />
</intent-filter>
</receiver>
<receiver android:name=".services.NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name=".services.SMSReceiver" >
<intent-filter android:priority="9999" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity
android:name=".ui.RegistrationActivity"
android:label="#string/app_name" >
</activity>
<activity
android:name=".ui.MapActivity"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".ui.SettingsActivity"
android:configChanges="orientation|screenSize" />
<activity
android:name=".ui.GroupsEdit"
android:parentActivityName=".ui.GroupsList" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.GroupsList" />
</activity>
<activity
android:name=".ui.GroupsList"
android:parentActivityName=".ui.AlertListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.AlertListActivity"
android:exported="true" />
<activity android:name=".ui.HelpActivity" />
<activity
android:name=".ui.AlertDetailActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:parentActivityName=".ui.AlertListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.AlertPopupActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:noHistory="true" >
</activity>
<activity
android:name=".services.helper.test.EncryptionTest"
android:label="#string/title_activity_encryption_test" >
</activity>
<activity
android:name=".services.helper.test.EncryptionClientTest"
android:label="#string/title_activity_encryption_client_test" >
</activity>
<activity
android:name=".ui.BlockedAlertListActivity"
android:label="#string/title_activity_blocked_alert_list" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.StartActivity"
android:label="#string/app_name"
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=".ui.FeedbackCustomTextActivity"
android:windowSoftInputMode="stateUnchanged" />
<!-- Widgets -->
<receiver
android:name=".ui.Widget"
android:label="#string/widget_title" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="de.example.changed.android2.ui.Widget.WIDGET_CLICK" />
</intent-filter>
<intent-filter>
<action android:name="de.example.changed.android2.ui.Widget.WIDGET_UPDATE_UI" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="#xml/widget_provider" />
</receiver>
<!-- Services -->
<!-- Provider -->
<provider
android:name=".provider.FilterProvider"
android:authorities="de.example.changed" >
</provider>
<activity android:name=".ui.FeedbackOverviewActivity" >
</activity>
<activity
android:name=".ui.ProfileListActivity"
android:label="#string/title_activity_profile_list"
android:parentActivityName=".ui.GroupsList" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.GroupsList" />
</activity>
<activity
android:name=".ui.ProfileEditActivity"
android:label="#string/title_activity_profile_edit" >
</activity>
<activity
android:name=".billing.BillingActivity"
android:label="#string/title_activity_billing" >
</activity>
</application>
</manifest>
remove android:targetSdkVersion="18"

Categories

Resources