Я получаю эту ошибку при попытке запустить приложение форм Xamarin на Android с URL-адреса текстового сообщения. Я выполнял шаги, описанные в статье ЭТО.
Здесь узел приложения в моем AppManifest.xml
<application android:label = "Label A">
<activity android:icon = "@drawable/Icon" android:label = "LabelB" android:name = ".MainActivity">
<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 = "superduperapp" />
</intent-filter>
</activity>
</application>
Согласно статье, мне нужно что-то сделать с намеренными объектами, чтобы активировать переопределение OnCreate, но я думаю, что я что-то не соответствую своему манифесту и соглашению об именах для класса, который я создал ниже.
[Activity(Label = "urlentryclass")]
public class OpenFromURI : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Intent outsideIntent = Intent;
var x = Intent.Data.EncodedAuthority;
}
}
Итак, с добавлением приведенного выше кода в мое решение xamarin у меня также есть веб-страница с приведенным ниже кодом ..
<a href = "superduperapp://QueryStringParamsGoHere"></a>и когда я нажимаю ссылку выше в моем мобильном браузере, она касается мобильного приложения, потому что я получаю сообщение об ошибке ниже
MyApp.Mobile.Droid.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "MyApp.Mobile.Droid.MainActivity" on path: DexPathList[[zip file "/data/app/MyApp.Mobile.Droid-1/base.apk"],nativeLibraryDirectories=[/data/app/MyApp.Mobile.Droid-1/lib/arm64, /data/app/MyApp.Mobile.Droid-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] occurred





MyApp.Mobile.Droid.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "MyApp.Mobile.Droid.MainActivity"
Xamarin.Android по умолчанию создает оболочки Java, используя имена классов на основе MD5, чтобы избежать конфликтов имен классов Java, например:
md579731053346ff64fcf21847b09163ce1.MainActivity
Вы жестко запрограммировали android:name = ".MainActivity" в своем манифесте, но сгенерированный класс по умолчанию будет основан на MD5.
Откройте свой MainActivity и в ActivityAttribute в своем классе MainActvity добавьте полное имя в параметре Name этого атрибута, это заставит процесс сборки Xamarin.Android использовать имя класса Java по вашему выбору по сравнению с именем на основе MD5 и, таким образом, он будет соответствовать вашей записи в манифесте.
[Activity(Name = "MyApp.Mobile.Droid.MainActivity", Label = "MySuperDuperApp", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
~~~
@Chucky Отправьте новый вопрос о проблеме, с которой вы столкнулись
Спасибо, Суши, мне нужно было разобраться в этом. Сейчас он работает, и я ценю вашу помощь!