我收到此错误 JNI ERROR(应用程序错误):访问陈旧的全局引用当我在Android OS v4中运行我的应用程序时,但是当我在Android v2.3中运行相同的应用程序时,我没有收到此错误.
这个错误发生在我调用AsyncTask类的地方,我将字符串数组作为参数传递
任何人都可以帮助我?
如果我知道资源的名称,我怎么能返回资源的id?
像这样的东西:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud) 我最近开始写Xamarin,编写代码来查看连接到主机的设备时遇到了一些问题.
我已阅读SDK文档,所有文档都是用java编写的.我正在尝试将java更改为C#,我将其编码为查找附加的设备:
UsbManager manager = (UsbManager)GetSystemService (Context.UsbService);
display.Text += " /n inizializzo il manager";
display.Text += "numero dispositivi: ";
display.Text += manager.DeviceList.Count;
Run Code Online (Sandbox Code Playgroud)
使用"usb manager"应用程序,我可以看到所有的usb附加,有3个.但是这个代码看起来是0 usb附加.
我不明白为什么.
我在Xamarin有一个针对Android,iOS和Windows手机的项目.我用核心(PCL库)在不同平台之间共享公共代码.我在我的核心库中添加了资源文件(.net资源).Resx,并在我的一个ViewModel中读取了我在以下代码片段中使用的特定于文化的字符串:
public string GetString()
{
// CommonResources is the name of my resource file
ResourceManager resManager = new ResourceManager(typeof(CommonResources));
return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture);
}
Run Code Online (Sandbox Code Playgroud)
"LoginLabel"是我的资源键,其值为"登录"(英文)和荷兰语中的"inloggen".
我在我的PCL项目中为英语和荷兰语创建了两个资源文件CommonResources.
CommonResources.resx
CommonResources.nl-NL.resx
在android,iOS和windows手机中,我将文化设置如下:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Run Code Online (Sandbox Code Playgroud)
这适用于Android和Windows手机.
但对iOS来说它不起作用.它总是从英文文件返回资源字符串.文化已正确设置,并以调试模式显示.但不知何故,它无法从荷兰资源加载资源字符串.
所以问题是,可以使用PCL为所有平台本地化字符串(.Net方式)吗?有谁有任何想法?提前致谢.
c# localization xamarin.ios xamarin.android portable-class-library
我将文件保存到Xamarin中的System.Environment.SpecialFolder.Personal,它似乎成功,因为我可以立即从文件中提取数据.但是,我无法在手机上浏览和查找此文件,这个难以捉摸的"个人"文件夹.
我已将一些Android支持库添加到我的项目中,现在我基本上面临与此问题中描述的相同的问题: Android Studio将支持库中的字符串导出到APK
由于我不能使用Xamarin的Gradle设置,我无法使用StackOverflow答案中描述的解决方案.
有没有人有一个想法,我如何才能在我的最终APK文件中保留特定的本地化?
在Visual Studio 2015中,安装了Xamarin,Android SDK,jdk 1.7和模拟器,Xamarin在工具>选项> Xamarin中包含所有绿色选中项.但是当我尝试创建空白应用程序(Android)VS时显示错误:
__PRE__
然后新项目无法创建,解决方案资源管理器将为空.
我该怎么解决?非常感谢
我正在使用James Montemagno的媒体插件来拍照.
出于某种原因,只有在手机上运行应用程序时,拍照时,缩略图才能在TestFolder中正确显示,但它们显示为空文件.
在模拟器中运行时,图像正确显示.
这是我的代码:
public async Task<MediaFile> TakePhoto() {
MediaFile result = null;
await CrossMedia.Current.Initialize();
if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported) {
// Supply media options for saving our photo after it's taken.
var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions {
SaveToAlbum = true,
Directory = "TestFolder",
Name="test.jpg"
};
// Take a photo of the business receipt.
result = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:
简而言之,由于某些原因,Media插件无法在我的手机上运行(华为P8 Lite).我在GitHub上尝试了这个示例:(用法)
https://github.com/jamesmontemagno/MediaPlugin
Run Code Online (Sandbox Code Playgroud)
照片确实显示在模拟器中但不在手机上(相机打开并拍照).如上所述,如果我访问相册文件夹,则会出现空缩略图.
编辑2
这是android清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="15" />
<application android:label="MediaPluginTests.Droid"></application>
<uses-permission …Run Code Online (Sandbox Code Playgroud) 像许多人一样 - 我正在开发一个带有共享代码库的应用程序(Windows Store + Android + MonoTouch + [稍后] WP8).
此外,与许多应用程序一样,我有本地状态,我需要坚持这个应用程序.
我存储的一条信息是登录用户的身份验证令牌.在Windows应用商店平台上,我已经实现了存储,其中包含ApplicationData.Current.RoamingSettings令牌辅助数据(用户名和发布日期)的漫游设置()和PasswordVault实际令牌值的混合.因此,令牌受到OS级内省的保护,因为它是由OS加密的.
现在我正在为我的MonoDroid构建实现相同的界面,我无法看到平台提供的任何方式来存储只能由我的应用程序解密的数据 - 就像可以使用密码库一样对于商店应用.
因此,目前,我只是Android.Content.ISharedPreferences通过该Application.Context.GetSharedPreferences方法使用接口来读取和写入这些值.
所以我认为平台(MonoDroid或Android)不提供安全存储OOB是正确的吗?是否是在应用程序中实现加密的唯一选择 - 这当然需要将加密密钥烘焙到代码中?或者我可以获取用于签署应用程序的证书并将其用作密钥吗?
最终,它不是世界的末日,如果我不能加密这些数据,因为令牌是有时间限制的呢-但它会是如果我能真正做到这一点很好的正确!
我正在尝试在我的monodroid应用程序中实现有效的异常处理,该应用程序是用Visual Studio的Xamarin.Android插件编写的.
我正在尝试处理两种类型的异常:
在全局处理程序的两种情况下,我想:
经过一定的调查后,我在这里和这里找到了一些答案,但除了AndroidEnvironment.UnhandledExceptionRaiser和AppDomain.UnhandledException之外什么都没有提出,它并不适用于所有情况.
我创建了一个简短的示例,我试图使用这两个处理程序:
AppDomain.CurrentDomain.UnhandledException += (s,e)=>
{
System.Diagnostics.Debug.WriteLine("AppDomain.CurrentDomain.UnhandledException: {0}. IsTerminating: {1}", e.ExceptionObject, e.IsTerminating);
};
AndroidEnvironment.UnhandledExceptionRaiser += (s, e) =>
{
System.Diagnostics.Debug.WriteLine("AndroidEnvironment.UnhandledExceptionRaiser: {0}. IsTerminating: {1}", e.Exception, e.Handled);
e.Handled = true;
};
Run Code Online (Sandbox Code Playgroud)
然后在按钮单击时,我添加了以下代码以引发两种类型的异常:
//foreground exception
throw new NullReferenceException("test nre from ui thread.");
//background exception
ThreadPool.QueueUserWorkItem(unused =>
{
throw new NullReferenceException("test nre from back thread.");
});
Run Code Online (Sandbox Code Playgroud)
因此,我对两种类型的异常都有不同的行为:
android exception-handling unhandled-exception xamarin.android xamarin
xamarin.android ×10
android ×7
xamarin ×7
c# ×5
mono ×2
apk ×1
filesystems ×1
localization ×1
media ×1
monodevelop ×1
mvvmcross ×1
usb ×1
xamarin.ios ×1