예제 #1
0
        async void GetKbArticleContent(Action callBack)
        {
            try
            {
                var result = await HttpClient.KbArticlesService.GetKbArticles(AccessTokenUtil.GetToken(this), ID);

                if (result.Success)
                {
                    string content = result.Data;
                    firstImgUrl = HtmlUtil.GetHtmlFirstImgUrl(content);
                    content     = content.ReplaceHtml().Trim('"');
                    content     = HtmlUtil.ReadHtml(Assets).Replace("#body#", content).Replace("#title#", kbArticles.Title).Replace("#author#", "作者:" + kbArticles.Author).Replace("#date#", "发布日期:" + kbArticles.DateAdded.ToString("yyyy年MM月dd日 HH:mm"));
                    wb_content.LoadDataWithBaseURL("file:///android_asset/", content, "text/html", "utf-8", null);
                    callBack();
                }
                else
                {
                    AlertUtil.ToastShort(this, result.Message);
                    callBack();
                }
            }
            catch (Exception ex)
            {
                AlertUtil.ToastShort(this, ex.Message);
                MobclickAgent.ReportError(this, ex.ToString());
                callBack();
            }
        }
예제 #2
0
        async void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs ex)
        {
            await Task.Run(() =>
            {
                Looper.Prepare();
                Toast.MakeText(this, Resources.GetString(Resource.String.search), ToastLength.Long).Show();
                Looper.Loop();
            });

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("生产厂商\n");
            sb.Append(Build.Manufacturer).Append("\n\n");
            sb.Append("手机型号\n");
            sb.Append(Build.Model).Append("\n\n");
            sb.Append("系统版本\n");
            sb.Append(Build.VERSION.Release).Append("\n\n");
            sb.Append("异常时间\n");
            sb.Append(DateTime.Now.ToString()).Append("\n\n");
            sb.Append("异常信息\n");
            sb.Append(ex.Exception).Append("\n");
            sb.Append(ex.Exception.Message).Append("\n");
            sb.Append(ex.Exception.StackTrace).Append("\n\n");
            MobclickAgent.ReportError(this, sb.ToString());

            System.Threading.Thread.Sleep(2000);
            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
            Java.Lang.JavaSystem.Exit(1);
        }
예제 #3
0
        async void GetClientStatus(int id)
        {
            try
            {
                status = await SQLiteUtil.SelectStatus(id);

                if (status != null)
                {
                    tv_userDisplayName.Text = status.UserDisplayName;
                    tv_dateAdded.Text       = status.DateAdded.ToCommonString();
                    tv_content.Text         = status.Content;
                    if (!status.UserIconUrl.Substring(status.UserIconUrl.Length - 4, 4).Contains(".png"))
                    {
                        iv_userIcon.SetImageResource(Resource.Drawable.noavatar);
                    }
                    else
                    {
                        ImageLoader.Instance.DisplayImage(status.UserIconUrl, iv_userIcon, options);
                    }
                }
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
            }
        }
예제 #4
0
        async void GetArticleContent(Action successCallBack)
        {
            try
            {
                var result = await HttpClient.ArticleService.GetArticle(AccessTokenUtil.GetToken(this), ID);

                if (result.Success)
                {
                    string content = result.Data;
                    content = content.ReplaceHtml().Trim('"');
                    content = HtmlUtil.ReadHtml(Assets).Replace("#body#", content).Replace("#title#", "").Replace("#author#", "").Replace("#date#", "");
                    wb_content.LoadDataWithBaseURL("file:///android_asset/", content, "text/html", "utf-8", null);
                    firstImgSrc = HtmlUtil.GetHtmlFirstImgUrl(content);
                    successCallBack();
                }
                else
                {
                    AlertUtil.ToastShort(this, result.Message);
                }
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
                AlertUtil.ToastShort(this, ex.Message);
            }
        }
예제 #5
0
 public override bool ShouldOverrideUrlLoading(WebView view, string url)
 {
     if (url.IndexOf(Constact.Callback) > -1)
     {
         Uri uri   = new Uri(url.Replace("#", "?"));
         var query = uri.Query.TrimStart('?').Split('&');
         foreach (var item in query)
         {
             var q = item.Split('=');
             if (q[0] == "code")
             {
                 var code = q[1];
                 System.Diagnostics.Debug.Write(code);
                 Token token = AccessTokenUtil.GetToken(context);
                 AuthorizationRequest.Authorization_Code(token, code, (userToken) =>
                 {
                     System.Diagnostics.Debug.Write(userToken.access_token);
                     UserTokenUtil.SaveToken(userToken, context);
                     // ActivityCompat.FinishAfterTransition(context);
                     context.StartActivity(new Intent(context, typeof(MainActivity)));
                     MobclickAgent.OnProfileSignIn(code);
                 },
                                                         error =>
                 {
                     MobclickAgent.ReportError(context, "µÇ¼ʧ°Ü" + error);
                     System.Diagnostics.Debug.Write(error);
                 });
             }
         }
         // view.stoploading();
     }
     return(base.ShouldOverrideUrlLoading(view, url));
 }
예제 #6
0
        private async Task <List <ArticleCommentModel> > listArticleCommentServer()
        {
            try
            {
                var token  = UserTokenUtil.GetToken(this);
                var result = await ArticleService.ListArticleComment(token, blogApp, postId, pageIndex);

                if (result.Success)
                {
                    _swipeRefreshLayout.Refreshing = false;

                    await SQLiteUtil.UpdateArticlecommentList(result.Data);

                    return(result.Data);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
                System.Diagnostics.Debug.Write(ex.ToString());
                return(null);
            }
        }
예제 #7
0
            /// <summary>
            /// 保存错误信息到文件中
            /// </summary>
            /// <param name="ex"></param>
            private void SaveCrashInfo2File(Throwable ex)
            {
                var sb = new System.Text.StringBuilder();

                foreach (var(key, value) in infos)
                {
                    sb.AppendLine($"{key} = {value}");
                }

                using var writer      = new StringWriter();
                using var printWriter = new PrintWriter(writer);

                ex.PrintStackTrace(printWriter);

                var cause = ex.Cause;

                while (cause != null)
                {
                    cause.PrintStackTrace(printWriter);
                    cause = cause.Cause;
                }

                var result = writer.ToString();

                sb.AppendLine(result);

                LoggerFactory.Current.Create().LogError(sb.ToString());

                MobclickAgent.ReportError(_context, sb.ToString());
            }
예제 #8
0
        public override async void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);
            try
            {
                this.HasOptionsMenu = true;
                swipeRefreshLayout  = view.FindViewById <SwipeRefreshLayout>(Resource.Id.swipeRefreshLayout);
                swipeRefreshLayout.SetColorSchemeResources(Resource.Color.primary);
                swipeRefreshLayout.SetOnRefreshListener(this);

                recyclerView = view.FindViewById <RecyclerView>(Resource.Id.recyclerView);
                var manager = new LinearLayoutManager(this.Activity);
                recyclerView.SetLayoutManager(manager);

                adapter = new StatusAdapter();
                adapter.SetOnLoadMoreListener(this);
                adapter.OnDeleteClickListener = this;
                adapter.User = await SQLiteUtils.Instance().QueryUser();

                recyclerView.SetAdapter(adapter);

                nologinView        = this.Activity.LayoutInflater.Inflate(Resource.Layout.nologin_view, (ViewGroup)recyclerView.Parent, false);
                nologinView.Click += delegate(object sender, EventArgs e)
                {
                    StartActivityForResult(new Intent(this.Activity, typeof(AuthorizeActivity)), (int)RequestCode.LoginCode);
                };
                notDataView        = this.Activity.LayoutInflater.Inflate(Resource.Layout.empty_view, (ViewGroup)recyclerView.Parent, false);
                notDataView.Click += delegate(object sender, EventArgs e)
                {
                    OnRefresh();
                };
                errorView        = this.Activity.LayoutInflater.Inflate(Resource.Layout.error_view, (ViewGroup)recyclerView.Parent, false);
                errorView.Click += delegate(object sender, EventArgs e)
                {
                    OnRefresh();
                };
                recyclerView.Post(async() =>
                {
                    if (position == 0)
                    {
                        await statusesPresenter.GetClientStatus();
                    }
                    else if (!LoginUtils.Instance(this.Activity).GetLoginStatus())
                    {
                        recyclerView.Post(() =>
                        {
                            adapter.SetEmptyView(nologinView);
                        });
                    }
                });
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(Context, ex.Message + ex.StackTrace);
            }
        }
예제 #9
0
        public async Task <ResultMessage> GetAsyn(string url)
        {
            Request  request  = new Request.Builder().Url(url).Build();
            Response response = await okHttpClient.NewCall(request).ExecuteAsync();

            var body = await response.Body().StringAsync();

            var code = response.Code();

            switch (code)
            {
            case (int)System.Net.HttpStatusCode.OK:
                return(new ResultMessage()
                {
                    IsError = false, Message = body
                });

            case (int)System.Net.HttpStatusCode.NotFound:
                MobclickAgent.ReportError(Context, body);
                return(new ResultMessage()
                {
                    IsError = true, Message = "404 NotFound"
                });

            case (int)System.Net.HttpStatusCode.Unauthorized:
                MobclickAgent.ReportError(Context, body);
                return(new ResultMessage()
                {
                    IsError = true, Message = "401 Unauthorized"
                });

            case (int)System.Net.HttpStatusCode.InternalServerError:
                MobclickAgent.ReportError(Context, body);
                return(new ResultMessage()
                {
                    IsError = true, Message = "500 InternalServerError"
                });

            case (int)System.Net.HttpStatusCode.BadGateway:
                MobclickAgent.ReportError(Context, body);
                return(new ResultMessage()
                {
                    IsError = true, Message = "502 BadGateway"
                });

            default:
                MobclickAgent.ReportError(Context, body);
                return(new ResultMessage()
                {
                    IsError = true, Message = "网络链接不可用 ,请稍后再试"
                });
            }
        }
예제 #10
0
 public override bool ShouldOverrideUrlLoading(WebView view, string url)
 {
     try
     {
         Intent intent = new Intent(Intent.ActionView);
         intent.SetData(Android.Net.Uri.Parse(url));
         context.StartActivity(intent);
     }
     catch (Exception ex)
     {
         MobclickAgent.ReportError(context, ex.Message);
         Toast.MakeText(context, "系统中没有安装浏览器客户端", ToastLength.Short).Show();
     }
     return(true);
 }
예제 #11
0
 async void GetClientQuestion(int id)
 {
     try
     {
         bool isSearch = Intent.GetBooleanExtra("issearch", false);
         if (!isSearch)
         {
             question = await SQLiteUtil.SelectQuestion(id);
         }
         BindView();
     }
     catch (Exception ex)
     {
         MobclickAgent.ReportError(this, ex.ToString());
     }
 }
예제 #12
0
        private async Task listSearchService(Action <List <ZzkDocumentViewModel> > successCallBack)
        {
            var result = await ZzkService.List(UserTokenUtil.GetToken(this), pageIndex, category, keyword);

            if (result.Success)
            {
                try
                {
                    successCallBack(result.Data);
                }
                catch (Exception ex)
                {
                    MobclickAgent.ReportError(this, ex.ToString());
                    System.Diagnostics.Debug.Write(ex.ToString());
                }
            }
        }
예제 #13
0
        async void GetServerQuestion()
        {
            try
            {
                var result = await QuestionService.GetQuestionDetail(AccessTokenUtil.GetToken(this), questionId);

                if (result.Success)
                {
                    question = result.Data;
                    BindView();
                }
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
            }
        }
예제 #14
0
        /****************
         *
         * 发起添加群流程。群号:xamarin android,C#,Web前端(371026625) 的 key 为: Q90lFEYkStricLdyCyJQMzJJq_5bo7gb
         * 调用 joinQQGroup(Q90lFEYkStricLdyCyJQMzJJq_5bo7gb) 即可发起手Q客户端申请加群 xamarin android,C#,Web前端(371026625)
         *
         * @param key 由官网生成的key
         * @return 返回true表示呼起手Q成功,返回fals表示呼起失败
         ******************/
        public bool joinQQGroup(string key)
        {
            Intent intent = new Intent();

            intent.SetData(Android.Net.Uri.Parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26k%3D" + key));
            // 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            try
            {
                StartActivity(intent);
                return(true);
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
                System.Diagnostics.Debug.Write(ex.ToString());
                // 未安装手Q或安装的版本不支持
                return(false);
            }
        }
예제 #15
0
        async void GetNewsContent(Action callBack)
        {
            try
            {
                if (string.IsNullOrEmpty(news.Body))
                {
                    var result = await HttpClient.NewsService.GetNewsDetail(AccessTokenUtil.GetToken(this), ID);

                    if (result.Success)
                    {
                        news.Body = result.Data;
                        await SQLiteUtil.UpdateNews(news);

                        firstImgUrl = HtmlUtil.GetHtmlFirstImgUrl(news.Body);
                        news.Body   = news.Body.ReplaceHtml().Trim('"');
                        string content = HtmlUtil.ReadHtml(Assets).Replace("#body#", news.Body).Replace("#title#", news.Title).Replace("#author#", "").Replace("#date#", "发布日期:" + news.DateAdded.ToString("yyyy年MM月dd日 HH:mm"));
                        wb_content.LoadDataWithBaseURL("file:///android_asset/", content, "text/html", "utf-8", null);
                        callBack();
                    }
                    else
                    {
                        AlertUtil.ToastShort(this, result.Message);
                        callBack();
                    }
                }
                else
                {
                    news.Body = news.Body.ReplaceHtml().Trim('"');
                    string content = HtmlUtil.ReadHtml(Assets).Replace("#body#", news.Body).Replace("#title#", news.Title).Replace("#author#", "").Replace("#date#", "发布日期:" + news.DateAdded.ToString("yyyy年MM月dd日 HH:mm"));
                    wb_content.LoadDataWithBaseURL("file:///android_asset/", content, "text/html", "utf-8", null);
                    firstImgUrl = HtmlUtil.GetHtmlFirstImgUrl(news.Body);
                    callBack();
                }
            }
            catch (Exception ex)
            {
                AlertUtil.ToastShort(this, ex.ToString());
                callBack();
                MobclickAgent.ReportError(this, ex.ToString());
            }
        }
예제 #16
0
        private async Task <List <BookmarksModel> > listBookmarkServer()
        {
            var result = await BookmarksService.List(UserTokenUtil.GetToken(this), Constact.PageSize, pageIndex);

            if (result.Success)
            {
                _swipeRefreshLayout.Refreshing = false;
                //bookMarkList = result.Data;
                try
                {
                    await SQLiteUtil.UpdateBookMarkList(result.Data);

                    return(result.Data);
                }
                catch (Exception ex)
                {
                    MobclickAgent.ReportError(this, ex.ToString());
                    System.Diagnostics.Debug.Write(ex.ToString());
                    return(null);
                }
            }
            return(null);
        }
예제 #17
0
 public void Onclick(SnsPlatform snsPlatform, SHARE_MEDIA media)
 {
     if (snsPlatform.MShowWord.Equals("umeng_sharebutton_copy"))
     {
         try
         {
             Intent intent = new Intent(Intent.ActionView);
             intent.SetData(Android.Net.Uri.Parse(umWeb.ToUrl()));
             context.StartActivity(intent);
         }
         catch (System.Exception ex)
         {
             MobclickAgent.ReportError(context, ex.Message);
             Toast.MakeText(context, "很抱歉,浏览器打开失败", ToastLength.Short).Show();
         }
     }
     else
     {
         new ShareAction(context).WithMedia(umWeb)
         .SetPlatform(media)
         .SetCallback(this)
         .Share();
     }
 }
예제 #18
0
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            blogApp = Intent.GetStringExtra("blogApp");
            postId  = Intent.GetIntExtra("postId", 0);
            SetToolBarNavBack();
            StatusBarUtil.SetColorStatusBars(this);
            SetToolBarTitle(Resources.GetString(Resource.String.comment));
            //显示图片配置
            options = new DisplayImageOptions.Builder()
                      .ShowImageForEmptyUri(Resource.Drawable.icon_yuanyou)
                      .ShowImageOnFail(Resource.Drawable.icon_yuanyou)
                      .ShowImageOnLoading(Resource.Drawable.icon_user)
                      .CacheInMemory(true)
                      .BitmapConfig(Bitmap.Config.Rgb565)
                      .CacheOnDisk(true)
                      // .Displayer(new DisplayerImageCircle(20))
                      .Build();
            edit_content = FindViewById <EditText>(Resource.Id.edit_content);
            btn_submit   = FindViewById <Button>(Resource.Id.btn_submit);
            //btn_submit.enabvle
            btn_submit.Click += (s, e) =>
            {
                Add();
            };
            edit_content.TextChanged += (s, e) =>
            {
                string temp = edit_content.Text.TrimStart().TrimEnd();
                if (!string.IsNullOrEmpty(temp))
                {
                    btn_submit.Enabled = true;
                    if (atUserName != null && atUserName.Length > 0 && temp.Contains(atUserName))
                    {
                        isAt = true;
                    }
                    else
                    {
                        isAt = false;
                    }
                }
                else
                {
                    btn_submit.Enabled = false;
                }
            };

            _swipeRefreshLayout = FindViewById <SwipeRefreshLayout>(Resource.Id.swipeRefreshLayout);
            _swipeRefreshLayout.SetColorSchemeResources(Resource.Color.primary);
            _swipeRefreshLayout.SetOnRefreshListener(this);
            _swipeRefreshLayout.Post(() =>
            {
                _swipeRefreshLayout.Refreshing = true;
            });
            _swipeRefreshLayout.PostDelayed(() =>
            {
                System.Diagnostics.Debug.Write("PostDelayed方法已经完成");
                _swipeRefreshLayout.Refreshing = false;
            }, 3000);
            _recyclerView = FindViewById <RecyclerView>(Resource.Id.recyclerView);
            _recyclerView.SetLayoutManager(new Android.Support.V7.Widget.LinearLayoutManager(this));
            _recyclerView.AddItemDecoration(new RecyclerViewDecoration(this, (int)Orientation.Vertical));
            try
            {
                commentList = await listArticleCommentServer();

                if (commentList != null)
                {
                    initRecycler();
                }
            }
            catch (Exception ex)
            {
                MobclickAgent.ReportError(this, ex.ToString());
                System.Diagnostics.Debug.Write(ex.ToString());
            }
        }
예제 #19
0
        protected override void ConvertAsync(RecyclerView.ViewHolder holder, StatusModel model)
        {
            var baseHolder   = holder as BaseAdapter.BaseViewHolder;
            var linearLayout = (baseHolder.GetView(Resource.Id.linearLayout) as LinearLayout);

            linearLayout.Tag = model.Id;
            linearLayout.SetOnClickListener(this);
            var txtDesc = (baseHolder.GetView(Resource.Id.txtDesc) as TextView);
            var txtParentCommentContent = (baseHolder.GetView(Resource.Id.txtParentCommentContent) as TextView);

            (baseHolder.GetView(Resource.Id.txtUserName) as TextView).Text = HtmlUtils.GetHtml(model.UserDisplayName).ToString();
            (baseHolder.GetView(Resource.Id.txtPostdate) as TextView).Text = DateTimeUtils.CommonTime(Convert.ToDateTime(model.DateAdded));
            var commentCount = (baseHolder.GetView(Resource.Id.txtCommentCount) as TextView);

            if (model.CommentCount > 0)
            {
                commentCount.Text = " " + model.CommentCount;
            }
            else
            {
                commentCount.Text = "";
            }
            var content = (baseHolder.GetView(Resource.Id.txtContent) as TextView);

            (baseHolder.GetView(Resource.Id.progressBar) as ProgressBar).Visibility = ViewStates.Gone;
            var imgUserUrl = (baseHolder.GetView(Resource.Id.imgUserUrl) as ImageView);
            var imgPrivate = (baseHolder.GetView(Resource.Id.imgPrivate) as ImageView);
            var imgDelete  = (baseHolder.GetView(Resource.Id.imgDelete) as ImageButton);

            imgDelete.Tag = model.Id;
            imgDelete.SetOnClickListener(this);
            if (User != null && User.UserId == model.UserGuid && model.Id > 0)
            {
                imgDelete.Visibility = ViewStates.Visible;
            }
            else
            {
                imgDelete.Visibility = ViewStates.Gone;
            }
            if (model.StatusId > 0)
            {
                commentCount.Visibility            = ViewStates.Gone;
                txtDesc.Text                       = "回复了您的评论";
                txtParentCommentContent.Visibility = ViewStates.Visible;
                txtParentCommentContent.SetText(HtmlUtils.GetHtml(model.ParentCommentContent), TextView.BufferType.Spannable);
            }
            else
            {
                commentCount.Visibility            = ViewStates.Visible;
                txtParentCommentContent.Visibility = ViewStates.Gone;
                txtDesc.Text     = "发布了";
                imgDelete.Tag    = model.Id;
                linearLayout.Tag = model.Id;
            }
            if (model.IsPrivate)
            {
                imgPrivate.Visibility = ViewStates.Visible;
                try
                {
                    Picasso.With(context)
                    .Load(Resource.Drawable.isPrivate)
                    .Into(imgPrivate);
                }
                catch
                {
                }
            }
            else
            {
                imgPrivate.Visibility = ViewStates.Gone;
            }
            if (model.IsLucky)
            {
                var Content  = "\u3000" + model.Content + " ";
                var spanText = new SpannableString(HtmlUtils.GetHtml(Content));
                try
                {
                    var imageSpan = new CenteredImageSpan(context, Resource.Drawable.luckystar);
                    spanText.SetSpan(imageSpan, spanText.Length() - 1, spanText.Length(), SpanTypes.InclusiveExclusive);
                }
                catch (Exception ex)
                {
                    MobclickAgent.ReportError(context, ex.Message);
                    spanText.SetSpan(context, spanText.Length() - 1, spanText.Length(), SpanTypes.InclusiveExclusive);
                }

                content.SetText(spanText, TextView.BufferType.Spannable);
            }
            else
            {
                content.SetText(HtmlUtils.GetHtml(model.Content), TextView.BufferType.Spannable);
            }
            try
            {
                Picasso.With(context)
                .Load(model.UserIconUrl)
                .Placeholder(Resource.Drawable.placeholder)
                .Error(Resource.Drawable.placeholder)
                .Transform(new CircleTransform())
                .Into(imgUserUrl);
            }
            catch
            {
            }
        }