I am trying to get admob to work in my Xamarin Android application but I get the following message when trying to display an add:
"You must have AdActivity declared in AndroidManifest.xml with configChanges"
I ave added the Xamarin google play service to my application.
I am set the java heap size to 1G and build with API level 14
I have googled the error message and most answerspoint to the manifest file that needs to include two entries. I have added the entries but still have the problem.
Any idea what I am doing wrong? Here is my Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:installLocation="auto" android:versionName="1.0">
<uses-sdk />
<application android:label="Aftermath">
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
Thanks
Related
I wan't to compile my project on Android and I got this following error :
Java.Lang.IncompatibleClassChangeError: 'No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/Digibois.LogiStock--0DmxMZxf8_3l0NMh1wijQ==/base.apk)'
There is my manifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.3.4.0" package="Digibois.LogiStock" android:installLocation="auto">
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="27" />
<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.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:label="LogiStock" android:icon="#drawable/icon"></application>
</manifest>
Im using an emulator with Android 6.0 API 23. I also tried with Android 8.1 API 27.
I tried to search a lot of solution but I found anything about it.
Thank's for your help !
Having a check with whether installing Xamarin.Android.Support.v4 NugetPackage :
In addition , to be sure the environment is no problem with Setting up the Android SDK for Xamarin.Android.
I'm trying to do the file picker thing, and it works with lower SDK versions but in this case (android 7.1) it requires the FileProvider.
The thing is that I have seen a lot of answers on the internet and I think that's all OK with my code. What do you think? Why can't I find the reference to the FileProvider in my class?
Hope someone has the idea why this is not working for me, here is the code:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.AppQ4evo" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27" />
<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_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_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.INTERNET" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:label="AppQ4evo.Android" android:icon="#drawable/srw_circular">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.com.companyname.AppQ4evo.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="#xml/filepaths" />
</provider>
</application>
</manifest>
Resources/xml/filepaths.xml:
<?xml version="1.0" encoding="utf-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
EDIT1(The Error):
So this was not easy to find out, but it look's like I need to add-in this extention:
https://marketplace.visualstudio.com/items?itemName=EgorBogatov.XamarinGradleBindings#qna
By add-in this you can now add references to the android directly like, and-in references from java(In my case FileProvider).
The tutorial for this is right in this link at github:
https://github.com/EgorBo/Xamarin.GradleBindings
Hope it helps people with this problem.
I'm trying to implement the MediaPlugin but I am running into a problem. I have done all steps in the setup instructions and get the following error:
Error: No resource found that matches the given name (at 'resource' with value '#xml/file_paths')
As explained in the setup instructions - in my Android project, I have added a folder inside the Resources-folder, called xml - containing a file called file_paths.xml with the following contents:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="Pictures" />
<external-files-path name="my_movies" path="Movies" />
</paths>
I expect this problem to be related to either the above or the AndroidManifest.xml, so I'll include my complete AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.company.Kvitt" android:installLocation="auto">
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:label="Kvitt.Android">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.company.Kvitt.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="#xml/file_paths"/>
</provider>
</application>
</manifest>
Any help or ideas on how to solve this error are really appreciated!
The res/xml directory should be in the same sub-folder as other Resources; drawable, layout, mipmap-XXX, etc...
Do a clean all / build all just as a double check
Double-check your xml path in the project: Resources/xml/file_paths.xml
After a build, check the build artifacts for the file in obj/Debug/android/res/xml
If the resource file is not in the build artifacts the likely cause is the build action is wrong
Check that the build action on the file is set to AndroidResource
Every time I debug, it installs 3 apps. I don't have idea why.
Image of emulator
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application android:theme="#style/Theme.Trunk"></application>
</manifest>
As pointed out in the comments. You have probably copied the [Activity] attribute from somewhere and included MainLauncher = true in two other Activities.
Remove MainLauncher = true from those Activities and it should only show one launcher.
I am developing an App with Google Maps and I have some difficulties in making it run on a Genymotion Emulator (Nexus 5 API 22)
Here's the message I got :
Installing application on device
Deployment failed because of an internal error: Unexpected install output: pkg:
/data/local/tmp/com.companyname.progettocomputergraphics-Signed.apk
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
Deployment failed. Internal error.
and thats my android manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.progettocomputergraphics">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<permission android:name="com.companyname.progettocomputergraphics.MAPS_RECEIVE" android:protectionLevel="signature" />
<uses-sdk android:targetSdkVersion="22" android:minSdkVersion="15" />
<application android:label="progettocomputergraphics" android:icon="#drawable/Icon">
<meta-data android:name="com.google.android.gsm.version" android:value="#integer/google_play_services_version" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my_API_Key" />
<service android:name=".ItineraryService"></service>
<receiver android:name=".RoutesRecevier" />
<activity android:name=".MapActivity">
<intent-filler>
<category android:name="android.intnet.category.LAUNCHER" />
</intent-filler>
</activity>
<activity android:name=".InfoActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="MapActivity" />
</activity>
</application>
</manifest>
Can anyone help me?
I've got the same issue (in my case using App Center Push SDK).
The issue was solved by avoiding uppercase on first letter of application/package name.
The first thing I will try to modify uses-permission tag:
<permission android: name = "com.companyname.progettocomputergraphics.MAPS_RECEIVE" android: ProtectionLevel = "signature" />
In my case I had to use
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBFdb7p_3FTSQWX-sfOniZmQrsBHnM0Bu.."/>
in manifest