选择与联系人选择器联系后,Android Webview应用程序崩溃

时间:2017-02-20 15:58:01

标签: c# android android-intent webview xamarin.android

我有一个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:关闭虚拟机

0 个答案:

没有答案