我有一个Mono Android Webview应用程序(使用c#VS2015开发)。
我目前面临的问题是,我正在启动一个ActionPick意图来选择联系人以发送自定义短信。但是一旦我从列表中选择了联系人,我在OnActivityResult方法中得到了一个“对象未设置为对象的实例”异常。
这里重要的是我从Javascript接口类调用这个意图(这就是我从我的网站,在webview中向我的应用程序发送数据的方式)。我猜这与它有关,但我不知所措,因为我已经尝试/捕捉所有内容,但应用程序仍在给我“MyApp已停止工作”消息。
它正在调用MainActivity ContactSMS(),并调出联系人列表。我似乎只是处理错误选择联系人的结果。
非常感谢您的任何帮助/建议!
Javascript界面:
[JavascriptInterface, Export("contactsms")]
public void ContactSMS()
{
try
{
if (context.GetType() == typeof(MainActivity))
((MainActivity)context).ContactSMS();
}
catch(Exception ex)
{
Toast.MakeText(context, "Interceptor_ContactSMS: " + ex.Message, ToastLength.Short).Show();
}
}
MainActivity:
public void ContactSMS()
{
try
{
//Create a new intent for choosing a contact
var contactPickerIntent = new Intent(Intent.ActionPick, ContactsContract.Contacts.ContentUri);
//contactPickerIntent.SetType(ContactsContract.Contacts.ContentType);
//Start the contact picker expecting a result
// with the resultCode '101'
StartActivityForResult(contactPickerIntent, 101);
}
catch(Exception ex)
{
Toast.MakeText(instance.context, "MainActivity_ContactSMS: " + ex.Message, ToastLength.Short).Show();
}
}
OnActivityResult(这不会运行 - 在输入方法之前崩溃):
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
try
{
//See if we are handling the contact picker request code
// and that the result code is ok!
if (requestCode == 101 && resultCode == Result.Ok)
{
...
}
来自应用崩溃的Logcat: 02-20 16:32:33.824 7348 7348 I MonoDroid:UNHANDLED EXCEPTION:
02-20 16:32:33.846 7348 7348 I MonoDroid:System.NullReferenceException:未将对象引用设置为对象的实例
02-20 16:32:33.846 7348 7348 I MonoDroid:at MyApp.MainActivity.OnActivityResult(Int32 requestCode,Result resultCode,Android.Content.Intent data)< 0xdd295de8 + 0x00a64> in:0
02-20 16:32:33.846 7348 7348 I MonoDroid:at Android.App.Activity.n_OnActivityResult_IILandroid_content_Intent_(IntPtr jnienv,IntPtr native__this,Int32 requestCode,Int32 native_resultCode,IntPtr native_data)< 0xdd295c80 + 0x00083> in:0
02-20 16:32:33.846 7348 7348 I MonoDroid:at(wrapper dynamic-method)System.Object:f36adbb7-bad7-46f4-8e5c-eab3c45d9499(intptr,intptr,int,int,intptr)
02-20 16:32:33.862 7348 7348艺术:JNI RegisterNativeMethods:尝试为android.runtime.JavaProxyThrowable注册0本机方法
02-20 16:32:33.868 7348 7348 D AndroidRuntime:关闭虚拟机