Articles of C#

C#DateTime to String Issue

我觉得这是我已经做了一千次的事情所以不确定为什么现在这么困难。 我创建了一个方法,它根据用户的UTC偏移量简单地返回用户的今天日期。 但是它没有返回类似日期的字符串,而是返回这个垃圾 “䙭/䙭/Ἰ뻱䙭” 这是代码。 public string getToday(Context context) { var settings = PreferenceManager.GetDefaultSharedPreferences(context); var offset = settings.GetInt(“offset”, -5); var now = DateTime.UtcNow.AddHours(offset); return now.ToShortDateString(); } 当我使用断点进入代码时,偏移现在看起来都是正确的。 现在包含所有看似准确的有效日期部分。 关于将现在转换为字符串的事情似乎非常错误。 还尝试过: return now.ToString(“MM/dd/yyyy”); 结果相同。 奇怪的部分是下面的代码在另一个活动工作没有问题 var offset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours; var now = DateTime.UtcNow.AddHours(offset); now.ToString(“MM-dd-yyyy”)

Monodroid – 处理子事件上的事件重用的ListView行的视图

Android的ListView重用已滚出视图的行。 但是,当在C#中处理行的子视图上的事件时,这似乎是一个问题。 在Java中添加事件处理程序的一种可接受的方法是显式设置一个像这样的处理程序: ImageView img = (ImageView) row.findViewById(R.id.pic); img.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { System.out.println(position); } }); Xamarin网站上的文档鼓励开发人员使用C#的add事件监听器模式,这种模式对重用行不起作用: ImageView img = row.FindViewById (Resource.Id.pic); img.Click += (sender, e) => { Console.WriteLine(position); }; 设置事件处理程序的Java模式非常适合于行重用,而在其下面添加事件处理程序的C#模式会导致处理程序堆积在重用行的子视图上。 下面的代码显示了我GetView的自定义BaseAdapter中的GetView方法。 public override Android.Views.View GetView (int position, View convertView, ViewGroup parent) { View row = convertView; //TODO: solve event listener bug. […]

在Xamarin应用程序中将项目添加到Android上的ListView

我正在尝试重新混合基本的Android建议,将项目添加到 Xamarin应用程序中的ListView ,但到目前为止,我失败了。 在Xamarin Studio中,我创建了一个针对最新和最大的Android应用程序 ,以及所有默认设置。 然后我在我的活动中添加了一个ListView ,并为其指定了@android:id/list 。 我已将活动的代码更改为: [Activity (Label = “MyApp”, MainLauncher = true, Icon = “@drawable/icon”)] public class MainActivity : ListActivity { List items; ArrayAdapter adapter; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Main); items = new List(new[] { “Some item” }); adapter = new ArrayAdapter (this, Android.Resource.Layout.SimpleListItem1, […]

使用Xamarin在Android中播放video

在Xamarin for Android中使用VideoView我想从资源播放video 这是代码: var videoView = (VideoView)FindViewById (Resource.Id.videoView); var Path = (“/Resources/raw/video.mp4”); var uri = Android.Net.Uri.Parse (Path); videoView.SetVideoURI (uri); videoView.Start (); 在调用videoView.Start()后,video无法播放,我得到的就是这条消息:无法播放此video

显示Acr用户对话框加载程序直到方法结束xamarin表单(android)

我在我的xamarin表单项目(android和ios)上使用ShowLoading()Acr UserDialogs(v5.2.2)但是我不会在启动await方法之前启动加载器并且在结束时隐藏Loader。 我的代码在ios上运行但在android上没有任何反应。 例 async Task MyMethod() { UserDialogs.Instance.ShowLoading(“Loading”,MaskType.Black); await ViewModel.LoadData(); UserDialogs.Instance.HideLoading(); } //InsideViewModel public async Task LoadData(); { await Task.Yield(); //without this code and ios doesnt work //download data } 我在MainActivity.cs上添加了android UserDialogs.Init(this) 有什么帮助吗? 谢谢

使用c#进行Android开发

有没有一种免费的方法来使用c#为我的Galaxy Tab(Androind 2.2)开发应用程序? 或者只有付费解决方案吗?

Waze Deep Links

我正在使用Xamarin Forms(跨平台)开发一个应用程序,我试图从我的应用程序打开Waze应用程序,通过纬度和经度。 它很好地打开Waze,但Waze刚打开,它没有试图find我通过的地址或纬度/经度。 关于我如何使它工作的一些想法? — 编辑 — 最后,它运用了@SushiHangover的想法,我设法达到了预期的效果。 最终的代码在这里: public static Task OpenWazeAndroid(decimal latitude, decimal longitude, string address) { if (IsAndroid()) { try { var lat = latitude.ToString().Replace(“,”,”.”); var longi = longitude.ToString().Replace(“,”, “.”); const string wazePrefix = “waze://”; Android.Content.Intent intent = new Android.Content.Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(wazePrefix)); string wazeURL = (“https://waze.com/ul?q=” + address + “&ll=” + lat + […]

无法从Android模拟器连接到localhost上的wcf服务

我正在使用Xamarin Studio构建一个应该访问wcf服务的应用程序。 使用以下URL访问该服务可以在我的浏览器中正常工作: http://localhost:52277/api 每当我尝试从我的Android代码访问它时,我得到以下exception: System.Net.WebException: Error: ConnectFailure (Connection refused) —> System.Exception: Connection refused at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] in :0 at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x00000] in :0 — End of inner exception stack trace — at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0 at System.Net.HttpWebRequest.GetResponse () [0x00000] in :0 at ServiceStack.ServiceClient.Web.ServiceClientBase.Send[String] (System.String httpMethod, System.String relativeOrAbsoluteUrl, […]

在APK中保护字符串

我正在使用Xamarin的Mono for Android开发Android应用程序。 我目前正在使用Google Play API添加应用内购买function。 为此,我需要从我的应用程序中向Google发送公共许可证密钥。 关于此问题,Google建议如下: 安全建议:强烈建议您不要对Google Play提供的确切公共许可证密钥字符串值进行硬编码。 相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者在将其传递给构造函数之前从加密存储中检索它。 这种方法使恶意第三方更难以修改APK文件中的公共许可证密钥字符串。 我从未处理过加密,黑客攻击/破解或软件安全的任何其他方面,因此我不确定如何实施Google的建议。 我的问题是如何在使用Mono for Android制作的Android APK中充分保护字符串而不必成为安全专家?

Xamarin Android:System.IO.Compression.ZipFile.ExtractToDirectory在发布模式下失败

在调试模式下一切正常,但是当我们在发布时运行它时,ExtractToDirectory调用失败。 这是供参考的function。 只是为了确保我们没有做任何奇怪的事情。 private bool UnzipFiles() { bool toReturn = true; try { UpdateStatus(“Almost done…”); string file = Path.Combine (DownloadFolder, “ZipFile.zip”); if(System.IO.Directory.Exists(UnzippingDestinationFolder)) { System.IO.Directory.Delete(UnzippingDestinationFolder, recursive:true); } System.IO.Compression.ZipFile.ExtractToDirectory(file, UnzippingDestinationFolder); UpdateStatus(“Finished!”); var files = System.IO.Directory.GetFiles(UnzippingDestinationFolder); int m = 3; } catch (Exception e) { toReturn = false; } 最后,这是我们得到的例外。 System.NullReferenceException: Object reference not set to an instance […]