Android App incompatible with all devices - android

Android Developer Console says my app is incompatible with all devices. However it is tight lipped as to why. Near as I can tell the reason is, according to an article I read, most likely from my android manifest being messed up. But I can't seem to figure out why. I have another app in the app store which is compatible with everything. So what's the issue?
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="Writing Analyzer"
android:roundIcon="#mipmap/ic_launcher_round"
android:theme="#style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ResultsActivity"/>
</application>
Edit: Some more info
-Minimum SDK is 15
-I am only using one external library, OpenNLP
-As part of OpenNLP I have a model in the assets folder
-I have a class that extends BaseListAdapter
Edit: Here is the full merged manifest. Sorry didn't realize at first that would be needed.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="3"
android:versionName="2.0"
package="textsnoop.rddigi.com.textstats"
platformBuildVersionCode="25"
platformBuildVersionName="7.1.1">
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="25" />
<meta-data
android:name="android.support.VERSION"
android:value="25.3.0" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.WAKE_LOCK" />
<uses-permission
android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="textsnoop.rddigi.com.textstats.permission.C2D_MESSAGE"
android:protectionLevel="0x2" />
<uses-permission
android:name="textsnoop.rddigi.com.textstats.permission.C2D_MESSAGE" />
<application
android:theme="#ref/0x7f0800a3"
android:label="Writing Analyzer"
android:icon="#ref/0x7f030000"
android:allowBackup="true"
android:supportsRtl="true"
android:roundIcon="#ref/0x7f030001">
<activity
android:name="textsnoop.rddigi.com.textstats.MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="textsnoop.rddigi.com.textstats.ResultsActivity" />
<activity
android:theme="#ref/0x0103000f"
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="0xfb0" />
<activity
android:theme="#ref/0x7f080111"
android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity" />
<activity
android:theme="#ref/0x01030010"
android:name="com.google.android.gms.common.api.GoogleApiActivity"
android:exported="false" />
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
android:enabled="true"
android:exported="false" />
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
android:permission="android.permission.INSTALL_PACKAGES"
android:enabled="true">
<intent-filter>
<action
android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.measurement.AppMeasurementService"
android:enabled="true"
android:exported="false" />
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:permission="com.google.android.c2dm.permission.SEND"
android:exported="true">
<intent-filter>
<action
android:name="com.google.android.c2dm.intent.RECEIVE" />
<action
android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category
android:name="textsnoop.rddigi.com.textstats" />
</intent-filter>
</receiver>
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
android:exported="false" />
<service
android:name="com.google.firebase.iid.FirebaseInstanceIdService"
android:exported="true">
<intent-filter
android:priority="-500">
<action
android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:exported="false"
android:authorities="textsnoop.rddigi.com.textstats.firebaseinitprovider"
android:initOrder="100" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#ref/0x7f0c0003" />
</application>

Please check your permissions and features in manifest file. Especially if you're mentioning any feature/permission that has required attribute e.g: <
uses-permission android:name="android.permission.READ_PHONE_STATE" android:required="true"/>
Remove the "android:required=true " part then it should work fine in Play Store.

I don't know exactly what caused the change, but I went through and cleaned the project with lint. I also removed a call to the apache commons io from the app. I suspect that is most likely the issue.

A possible reason for this is that your minimum API level is high, leading to your app being incompatible with many devices. Checkout:
Changing API level Android Studio if you want to change your minimum API level.
Try setting all the uses-feature"-tags to false
Try removing all permissions (I know the app won't work without them, but just for the sake of figuring out why Google Play says that the app supports 0 devices)

Related

Google Play. Publish status: Rejected

My app rejected by Google Play 3 times.
This is mail that they sent me:
In previous versions of the app, there were some permissions that I didn't request, I thought that was a problem and deleted those permissions and resubmitted the app and again I got rejected
My app asked to set the app as the Default Phone after signing up and if the user didn't set the app as the Default Phone, the app asked for some permissions.
This 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.xxxxxx.xxxxxx">
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:name=".MyApplication"
android:allowBackup="false"
android:dataExtractionRules="#xml/data_extraction_rules"
android:fullBackupContent="#xml/backup_rules"
android:hardwareAccelerated="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:roundIcon="#mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="#style/Theme.XXXX.Light"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".AuthActivity"
android:exported="true"
android:hardwareAccelerated="true"
android:theme="#style/Theme.App.Starting"
android:windowSoftInputMode="stateVisible|adjustResize">
<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" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="#string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="fontScale|density"
android:exported="false"
android:hardwareAccelerated="true"
android:windowSoftInputMode="stateVisible|adjustResize">
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>
<!-- <meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />-->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="#string/facebook_app_id" />
<meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="#string/facebook_client_token" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="#color/primary" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="#drawable/ic_launcher_foreground" />
<service
android:name=".core.service.AppFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver
android:name=".core.service.CallReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
</manifest>
In main they wrote that app "Requested permissions do not match core functionality of the app"
but the app needs all permissions.
- this permission need to connect with the backend
- this one is for reading contacts and showing to user
- this one is for adding new contacts this is also app functionality
- this one is for reading calls and showing to the user
- this one is for get images from gallery and setting to avatar
- and this one for call from app
What is a problem, can someone help me?
You can re request the review with explaining all the use cases for all the permissions. Also check that you have selected that correct category in the Google play console in the app description(Maybe select something similar to Phone dialier)
I also found one issus in the manifest file is that it uses usesCleartextTraffic which transports says that app uses http API which is not encrypted in transit. Since you are dealing with lots of sensitive data yoi should also remove that flag

Android studio - error: unknown element <meta-notification> found

I'm getting a error from android studio when building, this seems to be somewhere misplaced something in my manifest file. i tried searching for a solution and nothing seems to be working for me, i'm new to this and was following a tutorial. can someone please look into my manifest file and see what i have done wrong?
Also i see so many places red in my code and when i move the mouse the error is "Attribute is not allowed here", please can someone help me?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.www.riderapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="28" />
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" /> <!-- Include required permissions for Google Maps API to run. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" /> <!-- Required by older versions of Google Play services to create IID tokens -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:name="android.support.multidex.MultiDexApplication"
android:allowBackup="true"
android:debuggable="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:roundIcon="#mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="#style/AppTheme" >
<activity android:name="com.example.www.riderapp.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-notification
android:name="com.google.android.geo.API_KEY"
android:value="#string/google_maps_key" />
<activity
android:name="com.example.www.riderapp.Welcome"
android:label="#string/title_activity_welcome" />
<activity
android:name="com.example.www.riderapp.Home"
android:label="#string/title_activity_home"
android:theme="#style/AppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.example.www.riderapp.Service.MyFirebaseIdService" >
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service android:name="com.example.www.riderapp.Service.MyFirebaseMessaging" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="android.support.VERSION"
android:value="26.1.0" />
<activity
android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleInstance"
android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
android:theme="#android:style/Theme.Translucent.NoTitleBar" />
<service
android:name="com.google.firebase.components.ComponentDiscoveryService"
android:exported="false" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
<!--
FirebaseMessagingService performs security checks at runtime,
no need for explicit permissions despite exported="true"
-->
<service
android:name="com.google.firebase.messaging.FirebaseMessagingService"
android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
android:enabled="true"
android:exported="false" >
</receiver>
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.INSTALL_PACKAGES" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.measurement.AppMeasurementService"
android:enabled="true"
android:exported="false" />
<service
android:name="com.google.android.gms.measurement.AppMeasurementJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
<!--
FirebaseInstanceIdService performs security checks at runtime,
no need for explicit permissions despite exported="true"
-->
<service
android:name="com.google.firebase.iid.FirebaseInstanceIdService"
android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<activity
android:name="com.google.android.gms.common.api.GoogleApiActivity"
android:exported="false"
android:theme="#android:style/Theme.Translucent.NoTitleBar" />
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="com.example.www.riderapp.firebaseinitprovider"
android:exported="false"
android:initOrder="100" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
how do you have 2 launcher :D
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
remove one of them and leave the start point

ERROR getting 'name' attribute: attribute is not a string value

Uploading my apk file to google play makes this error:
Your APK cannot be analyzed using aapt. Error output: Failed to run
aapt dump badging: ERROR getting 'name' attribute: attribute is not a
string value
Since I know that this problem is within my manifest file, I have put it here:
AndroidManifext.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.altontech.newsimpay">
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<permission
android:name="ir.altontech.newsimpay.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="ir.altontech.newsimpay.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" />
<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.RECEIVE_SMS" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application xmlns:tools="http://schemas.android.com/tools"
android:name="ir.altontech.newsimpay.Classes.Model.AnalyticsApplication"
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="false"
android:theme="#style/AppTheme"
tools:replace="android:supportsRtl">
<receiver
android:name="com.adjust.sdk.AdjustReferrerReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver android:name=".Receivers.SmsListener">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false" />
<activity
android:name="ir.altontech.newsimpay.Activities.Introduction"
android:screenOrientation="portrait" />
<activity
android:name="ir.altontech.newsimpay.Activities.Main"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="ir.altontech.simpay"
android:theme="#style/AppTheme"
android:windowSoftInputMode="adjustPan"/>
<activity
android:name=".Activities.SpecificPage"
android:screenOrientation="portrait">
<intent-filter>
<data
android:host="ir.altontech.simpay.specific"
android:scheme="simpay" />
<data
android:host="ad.simpay.ir"
android:scheme="http" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Activities.SplashActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="ir.altontech.simpay"
android:theme="#style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activities.FastCharge"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:taskAffinity="ir.altontech.simpay"
android:theme="#style/fast_charge_theme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity android:name="ir.altontech.newsimpay.Activities.BarcodeScanner" />
<activity
android:name="ir.altontech.newsimpay.Activities.FinalTrainTicket"
android:screenOrientation="landscape" />
<activity
android:name="ir.altontech.newsimpay.Activities.VideoPlayer"
android:screenOrientation="landscape"
android:taskAffinity="ir.altontech.simpay" />
<activity android:name="ir.altontech.newsimpay.Activities.CallBack">
<intent-filter>
<data
android:host="ir.altontech.simpay.callback"
android:scheme="simpay" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:name=".Classes.Services.GCMService"
android:exported="false" />
<receiver
android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.analytics.CampaignTrackingService"
android:enabled="true"
android:exported="false" />
<!-- services -->
<!-- registration process service -->
<service
android:name="ir.altontech.cloudmessaging.core.registrationprocess.RegistrationProcessService"
android:exported="false">
<intent-filter>
<action android:name="co.shariftech.pushnotification.intent.action.START_PUSH_NOTIFICATION_SERVICE" />
</intent-filter>
</service>
<!-- registration process token refresher service -->
<service
android:name="ir.altontech.cloudmessaging.core.registrationprocess.RegistrationProcessTokenRefresherService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<!-- push notification service -->
<service
android:name="ir.altontech.cloudmessaging.core.pushnotification.PushNotificationService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<!-- receivers -->
<!-- google cloud messaging receiver -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="ir.altontech.newsimpay" />
</intent-filter>
</receiver>
</application>
</manifest>
I have checked all android:name attributes and couldn't find the problem. Thank you all.
so after searching a little I have found three options for you to do:
1- if you have something as follows (which I see you don't ):
<intent-filter>
<action android:name="#string/alarm_auto_sync" >
</intent-filter>
you should hard code the string and remove #string
2- follow this bug to see what could and have been done to solve this issue as I found out this might be the bug of
aapt dump badging
3- if you have values-fa and values-en and other string values as such you should copy your android:name to values.
for more information on these options visit this question or this question
hope this helps
You can go for below suggested link. I hope it helps you.
aapt ERROR getting 'android:name' attribute: attribute is not a string value
Thank you
I think this issue is for different reasons for different people. But in all cases it is the android:name attribute that needs to be investigated. When I encountered it and read some of the replies here, I found mine. Adding it here, just so that it can help someone in future.
<intent-filter>
<action android:name="#string/broadcast_action" />
</intent-filter>
I had defined broadcast_action in strings.xml It worked when I changed that to a hardcoded string. AAPT does not accept a string reference here.
All thing seems good in your AndroidManifest.xml except xmlns:tools="http://schemas.android.com/tools" position. Please give a try by moving xmlns:tools="http://schemas.android.com/tools" from <application></application> tag to <manifest></manifest> tag like this.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.altontech.newsimpay"
xmlns:tools="http://schemas.android.com/tools">
<application
android:name="ir.altontech.newsimpay.Classes.Model.AnalyticsApplication"
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="false"
android:theme="#style/AppTheme"
tools:replace="android:supportsRtl">
</application>
Hope this will work for you :)
check this link from google
android:name="string"
the document says , your syntax of android:name element should be String .
i think , your manifest file project is good . check your manifest library .maybe you add some library and get this error . also check your project and your library have android:name element .
hope this help you .
This is how you have defined your custom permission:
<permission
android:name="ir.altontech.newsimpay.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
But in the docs you can see:
You need to supply both a label and description for the permission.
I'm not sure whether this may be the case, but at least docs urge you to define label and description.
If you are using any library project as module in your project that having
android:label="#string/app_name"
in their string.xml file then it may coause of your problem.
So your pass hardcode app name in your manifest file for app name like below.
android:label="PASS YoUR APP NAME HERE not from string.xml"
If your app is multi-lingual, then make sure you have provided the translatable as false in the string.xml or provide the app_name in the other files as well. I too got this error once and that was the cause.
may be on of your class had been moved to another package check if all of your classes are in the same package path like manifest
android:name="ir.altontech.cloudmessaging.core.pushnotification.PushNotificationService"
First of all, try to follow java naming convention
Since from your code I cant realy tell is your Application Class an Enclosing class
Try using .Classes.Model.AnalyticsApplication instead of ir.altontech.newsimpay.Classes.Model.AnalyticsApplication
For me the issue was that the broadcast intent-filter name which was referenced from the string file was deleted.
If you are using multi-module project check all manifest in Android Studio to see an error. android:name can refer to any android:name attribute, not just the one in application tag.
Merged manifest can be found at
app/build/intermediates/merged_manifest/<flavour>
In Android we need to assign the strings through string.xml file.
String name - "xyz app"
this is not the recommended approach
String name = "#string/app_name"
In String.xml Store this name as
<string name="app_name">xyz app</string>
complete in android programming we need to follow this approach for using strings

OUTDATED DEVICE: Parse Push Notification to Android devices

Hi have worked with parse for saving data. But notification is something i am stuck with. I am not able figure out what's going wrong.
I have done all the receiver registrations and so my device also gets registered in the installation table but while sending push from web console it says "push sent 0" looking into the description of each push it shows that "OUTDATED DEVICE - The records on this installation are outdated, the user might have uninstalled the app." But I just did the registration.
I am going mad with this...no clue in what am I doing wrong, I am using eclipse IDE, Can anyone please suggest me any Solution??
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.parsecomlogin"
android:versionCode="1"
android:versionName="1.0" >
<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.VIBRATE" />
<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_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.example.parsecomlogin.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.parsecomlogin.permission.C2D_MESSAGE" />
<permission
android:name="com.example.parsecomlogin.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.parsecomlogin.permission.MAPS_RECEIVE" />
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:name=".ParseApp"
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
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" />
</intent-filter>
</activity>
<!-- Added for Parse push notifications -->
<!-- My custom receiver -->
<receiver
android:name=".ParseReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="com.example.parsecomlogin.RECEIVE_PUSH" />
</intent-filter>
</receiver>
<!-- END my custom receiver -->
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.parsecomlogin" />
</intent-filter>
</receiver>
<activity
android:name=".Welcome"
android:label="#string/title_activity_welcome" >
</activity>
<activity
android:name=".LoginActivity"
android:label="#string/title_login" >
</activity>
<activity
android:name=".LoginSignupActivity"
android:label="#string/title_activity_login_signup" >
</activity>
<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="AIzaSyDZ5TG28QJnN5zMyIdezPllvrfrwg7ElQs" />
</application>
</manifest>
I faced exactly the same problem and I fixed it a few minutes ago by coincidence. I hope the problem can be solved with the same touch-up for you as well.
In my situation, I used one of the older projects I worked and I have changed manifest package name manually in a way. In AndroidManifest.xml file, the manifest package name was changed to "com.myprojectname". There was no problem and app can run without any error with this package name. Also, all of Parse features run problem-free except push notification service. Then I checked other paths with Ctrl + Shift + R and searched whether R.java uses the same name. Unsurprisingly, the package name was identical in this file but I realized that in the lines below R.java uses the pattern of "net.myprojectname.app" instead of "com.myprojectname". I replaced "com.myprojectname" with "net.myprojectname.app" in all files by using Ctrl + Shift + R again. I think it was not the cause of the problem but I tried to send a last push notification desperately. It is hard to believe but it is worked. I got the notification successfully after all.
I answered the question in a highly informal and non-technical way but I have no idea about the underlying cause, I just want to help. Maybe it works for you. Good luck.

Google Play rejects APK based on package name

Been building an app within MIT's App Inventor (herecy on this site I know.) I uploaded the first version to Google Play yesterday and all went smoothly. Tried to push a new APK to production this morning but got this error;
http://i.stack.imgur.com/GzBD9.png
(sorry not enough rep to post images)
Confused, I went ahead and decompiled the APK and got this;
<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="2" android:versionName="1.0.1" package="appinventor.ai_benjamdavidstocker.IGSoundboard"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:label="IGSoundboard" android:icon="#drawable/ya" android:debuggable="false">
<activity android:name=".Screen1" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="appinventor.ai_benjamdavidstocker.IGSoundboard.Board" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity android:name="com.google.appinventor.components.runtime.ListPickerActivity" android:screenOrientation="behind" android:configChanges="keyboardHidden|orientation" />
<activity android:name="com.google.appinventor.components.runtime.WebViewActivity" android:screenOrientation="behind" android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
</manifest>
As you can see, package="appinventor.ai_benjamdavidstocker.IGSoundboard"
which matches the one Google Play is requesting. So what's the problem?
The Capitalization in SoundBoard is different on the word Board
instead of
appinventor.ai_benjamdavidstocker.IGSoundboard
it should be
appinventor.ai_benjamdavidstocker.IGSoundBoard
IGSoundBoard with a capital 'B'

Categories

Resources