private void openPDF(SavedExpenseForm selectedExpenseForm)
        {
            try {
                var pathToPdf = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
                pathToPdf = Path.Combine (pathToPdf, selectedExpenseForm.ID.ToString () + ".pdf");

                Backend.Current.getFormPDF (selectedExpenseForm.ID, pathToPdf);
                Console.WriteLine ("PDF: " + pathToPdf);
                Java.IO.File myFile = new Java.IO.File (pathToPdf);

                Console.WriteLine ("File Uri: " + myFile.ToString ());

                Android.Net.Uri targetUri = global::Android.Net.Uri.FromFile (myFile);
                Intent intent = new Intent (Intent.ActionView);
                intent.SetDataAndType (targetUri, "application/pdf");

                StartActivity (intent); // Adobe reader does not want to open the pdf...
            }
            catch (ActivityNotFoundException e)
            {
                Toast.MakeText (this, "No PDF viewer installed.", ToastLength.Short).Show ();
            }
            catch (Exception ex)
            {
                Toast.MakeText (this, ex.Message, ToastLength.Short).Show ();
            }
        }
Example #2
0
        public void InstallAPK_MoreThanAndroid7(Java.IO.File apkFileToInstall)
        {
            Android.Content.Intent intent = new Android.Content.Intent();
            intent.SetAction(Android.Content.Intent.ActionView);

            if (string.IsNullOrWhiteSpace(mFileProvider_Authority))
            {
                throw new Exception("mFileProvider_Authority为空值。请使用 SetFileProvider_Authority(string) 方法设置 mFileProvider_Authority 的值。");
            }

            Android.Net.Uri uri = Android.Support.V4.Content.FileProvider.GetUriForFile
                                  (
                context: mAppActivity.ApplicationContext,
                authority: mFileProvider_Authority,
                file: apkFileToInstall
                                  );

            intent.SetDataAndType(uri, "application/vnd.android.package-archive");

            intent.SetFlags(Android.Content.ActivityFlags.NewTask); // SetFlags 一定要在 Add Flags 之前, 否则 Add Flags 会被覆盖
            intent.AddFlags(Android.Content.ActivityFlags.GrantReadUriPermission);
            intent.AddFlags(Android.Content.ActivityFlags.GrantWriteUriPermission);

            mAppActivity.Application.StartActivity(intent);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            base.OnCreateView (inflater, container, savedInstanceState);
            var view = inflater.Inflate (Resource.Layout.DocumentFragmentLayout, null, true);

            documentListView = view.FindViewById<ListView> (Resource.Id.documentsListView);
            if (Documents != null)
                documentListView.Adapter = new DocumentsAdapter (Activity, Resource.Layout.DocumentListItemLayout, Documents);

            documentListView.ItemClick += (sender, e) => {
                var textView = e.View.FindViewById<TextView> (Resource.Id.documentListItemDocTitle);

                var document = Documents.ElementAtOrDefault ((int)textView.Tag);

                //start intent with the uri path of the document
                var strings = document.Path.Split ('/');
                CopyReadAsset (strings [1]);
                var intent = new Intent (Intent.ActionView);
                var uri = Uri.FromFile (file);
                intent.SetDataAndType (uri, "application/pdf");
                intent.SetFlags (ActivityFlags.ClearTop);
                try {
                    Activity.StartActivity (intent);
                } catch (ActivityNotFoundException exc) {
                    Log.WriteLine (LogPriority.Error, Constants.LogTag, exc.Message);
                }
            };

            return view;
        }
		/**
	     * Helper method to carry out crop operation
	     */
		private void performCrop(){
			//take care of exceptions
			try {
				//call the standard crop action intent (the user device may not support it)
				Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
				//indicate image type and Uri
				cropIntent.SetDataAndType(picUri, "image/*");
				//set crop properties
				cropIntent.PutExtra("crop", "true");
				//indicate aspect of desired crop
				cropIntent.PutExtra("aspectX", 1);
				cropIntent.PutExtra("aspectY", 1);
				//indicate output X and Y
				cropIntent.PutExtra("outputX", 256);
				cropIntent.PutExtra("outputY", 256);
				//retrieve data on return
				cropIntent.PutExtra("return-data", true);
				//start the activity - we handle returning in onActivityResult
				StartActivityForResult(cropIntent, PIC_CROP);  
			}
			//respond to users whose devices do not support the crop action
			catch(ActivityNotFoundException anfe){
				//display an error message
				String errorMessage = "Whoops - your device doesn't support the crop action!";
				Toast toast = Toast.MakeText(this, errorMessage, ToastLength.Short);
				toast.Show();
			}
		}
Example #5
0
        public bool Open(string fileName) {
            if (String.IsNullOrWhiteSpace(fileName))
                return false;

            var dataType = GetMimeType(fileName);

            // external apps do not have access to cache directory, copy from the cache to an external location
            var newPath = Path.Combine(
                this.externalDirectory,
                Path.GetFileName(fileName)
            );
            File.Copy(fileName, newPath, true);

            try {
                var file = new Java.IO.File(newPath);
                var uri = Android.Net.Uri.FromFile(file);
                var intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(uri, dataType);
                Forms.Context.StartActivity(intent);
                return true;
            }
            catch {
                return false;
            }
        }
		public void ShowImage (string imageURL)
		{
			Intent intent = new Intent();
			intent.AddFlags (ActivityFlags.NewTask);
			intent.SetAction(Intent.ActionView);
			intent.SetDataAndType(Android.Net.Uri.Parse(imageURL), "image/*");
			Application.Context.StartActivity(intent);
		}
Example #7
0
 private void InstallAPK_Simple(Java.IO.File apkFileToInstall)
 {
     Android.Content.Intent intent = new Android.Content.Intent();
     intent.SetAction(Android.Content.Intent.ActionView);
     intent.SetFlags(Android.Content.ActivityFlags.NewTask);
     intent.SetDataAndType(Android.Net.Uri.FromFile(apkFileToInstall), "application/vnd.android.package-archive");
     mAppActivity.Application.StartActivity(intent);
 }
Example #8
0
    private void onClickPlayVideo(File file)
    {
        var uri    = Android.Net.Uri.FromFile(file);
        var intent = new Android.Content.Intent(Intent.ActionView, uri);

        intent.SetDataAndType(uri, "video/*");
        activity.StartActivityForResult(intent, 0);
    }
 public Intent DisplayPDF(Java.IO.File file)
 {
     Intent intent = new Intent (Intent.ActionView);
     Android.Net.Uri filepath = Android.Net.Uri.FromFile (file);
     intent.SetDataAndType (filepath, "application/pdf");
     intent.SetFlags (ActivityFlags.ClearTop);
     return intent;
 }
Example #10
0
        public override void OpenPreview(Android.App.Activity androidActivity)
        {
            if (ContactId != null)
            {
                var intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(
                    Android.Net.Uri.WithAppendedPath(ContactsContract.Contacts.ContentUri, ContactId),
                    ContactsContract.Contacts.ContentType);

                androidActivity.StartActivity(intent);
            }
        }
        private void VideoTouched(object sender, System.EventArgs e)
        {
            if (video != null)
            {
                video.StopPlayback();
                video.Dispose();
                video = null;
            }

            Uri videoUri = Uri.Parse(videoAdd);
            Intent intent = new Intent(Intent.ActionView, videoUri);
            intent.SetDataAndType(videoUri, "video/mp4");
            Activity.StartActivity(intent);
            this.Dismiss();
        } 
Example #12
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            Edit = FindViewById<AutoCompleteTextView>(Resource.Id.Edit);

            Button button = FindViewById<Button>(Resource.Id.MyButton);

            button.Click += delegate {
                string EditText = Edit.Text;

                Intent intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("http://test.mp4"));
                intent.SetDataAndType(Android.Net.Uri.Parse(EditText), "video/mp4");
                StartActivity(intent);
            };
        }
        public async Task<bool> Download(string uri, string filename)
        {

            string downloadedFolder = "/storage/emulated/0/Download/";
            if (App.DownloadsPath != null && !string.IsNullOrEmpty(App.DownloadsPath))
            {
                downloadedFolder = App.DownloadsPath + "/";
            }

			string fileExtenstion = Path.GetExtension(filename);

			if (fileExtenstion == ".jpg" || fileExtenstion == ".jpeg" || fileExtenstion == ".png")
				return false;

            if (System.IO.File.Exists(downloadedFolder + filename))
            {
                string downloadedUri = "file://" + downloadedFolder + filename;
                Java.IO.File file = new Java.IO.File(new Java.Net.URI( downloadedUri ));
                Intent videoPlayerActivity = new Intent(Intent.ActionView);
                videoPlayerActivity.SetDataAndType(Android.Net.Uri.FromFile(file), "video/*");
                Activity activity = Forms.Context as Activity;
                activity.StartActivity(videoPlayerActivity);
                return true;
            }
          
            App.DownloadID = 0;

            Android.Net.Uri contentUri = Android.Net.Uri.Parse(uri);

            Android.App.DownloadManager.Request r = new Android.App.DownloadManager.Request(contentUri);


            r.SetDestinationInExternalPublicDir(Android.OS.Environment.ExternalStorageDirectory.ToString(), filename);

            r.AllowScanningByMediaScanner();

            r.SetNotificationVisibility(Android.App.DownloadVisibility.VisibleNotifyCompleted);

            Android.App.DownloadManager dm = (Android.App.DownloadManager)Xamarin.Forms.Forms.Context.GetSystemService(Android.Content.Context.DownloadService);

            App.DownloadID = dm.Enqueue(r);

            AndHUD.Shared.Show(MainActivity.GetMainActivity(), "Dowloading Media...", -1, MaskType.Clear, null, () => { dm.Remove(App.DownloadID); }, true, () => { dm.Remove(App.DownloadID); });


            return true;
        }
        private void PerformCrop(Uri picUri, Action<string> callbackResult, string path)
        {
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            // indicate image type and Uri
            cropIntent.SetDataAndType(picUri, "image/*");
            // set crop properties
            cropIntent.PutExtra("crop", "true");
            // indicate aspect of desired crop
            cropIntent.PutExtra("aspectX", 1);
            cropIntent.PutExtra("aspectY", 1);
            // retrieve data on return
            cropIntent.PutExtra(MediaStore.ExtraOutput, picUri);
            // start the activity - we handle returning in onActivityResult
            ActivityService.StartActivityForResult(cropIntent, (result, data) =>
            {
				callbackResult(result == Result.Ok ? path : null);
            });
        }
        public void Save(string fileName, String contentType, MemoryStream stream)
        {
            string exception = string.Empty;
            string root = null;
            if (Android.OS.Environment.IsExternalStorageEmulated)
            {
                root = Android.OS.Environment.ExternalStorageDirectory.ToString();
            }
            else
                root = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            Java.IO.File myDir = new Java.IO.File(root + "/Syncfusion");
            myDir.Mkdir();

            Java.IO.File file = new Java.IO.File(myDir, fileName);

            if (file.Exists()) file.Delete();

            try
            {
                FileOutputStream outs = new FileOutputStream(file);
                outs.Write(stream.ToArray());

                outs.Flush();
                outs.Close();
            }
            catch (Exception e)
            {
                exception = e.ToString();
            }
            if (file.Exists() && contentType != "application/html")
            {
                Android.Net.Uri path = Android.Net.Uri.FromFile(file);
                string extension = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString());
                string mimeType = Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension);
                Intent intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(path, mimeType);
                Forms.Context.StartActivity(Intent.CreateChooser(intent, "Choose App"));

            }
        }
		public bool Open(IFile file) {
			try {
				// external apps do not have access to cache directory, copy from the cache to an external location
				var newPath = this.GetReadPath(file.Name);
				file.CopyTo(newPath);

				var javaFile = new Java.IO.File(newPath);
				var uri = Android.Net.Uri.FromFile(javaFile);
				var intent = new Intent(Intent.ActionView);
				intent.SetDataAndType(uri, file.MimeType);
				if (!IsIntentManagable(intent))
					return false;

				this.StartActivity(intent);
				return true;
			}
			catch (Exception ex) {
				Mvx.Warning(ex.ToString());
				return false;
			}
		}
Example #17
0
        private void OnDownloadUpdate(object sender, DoWorkEventArgs args)
        {
            String path = Android.Os.Environment.GetExternalStoragePublicDirectory(Android.Os.Environment.DIRECTORY_DOWNLOADS) + "/JGCompanion.apk";

            try
            {
                WebClient client = new WebClient();
                client.DownloadFile(args.Argument.ToString(), path);

                Intent i = new Intent();
                i.SetAction(Intent.ACTION_VIEW);
                i.SetDataAndType(Android.Net.Uri.FromFile(new Java.Io.File(path)), "application/vnd.android.package-archive");
                Log.D("JGCompanion", "Starting auto-update");
                MainActivity.StartActivityOnMain(i);
            }
            catch (Exception ex)
            {
                Log.E("JGCompanion", "Error during auto-update!");
                Log.E("JGCompanion", ex.Message);
            }
        }
	    public void ShowPdfFile(string pdfFileName)
        {
            string path = Path.Combine(CurrentActivity.GetExternalFilesDir(null).AbsolutePath, pdfFileName);

            if (!File.Exists(path))
            {
                try
                {
                    FileStream output = File.OpenWrite(path);
					Stream input = CurrentActivity.Assets.Open(pdfFileName);
                    input.CopyTo(output);
                    input.Close();
                    output.Flush();
                    output.Close();
                }
                catch (Exception)
                {
                    LoggerService.Log(string.Format("ResourceService.ShowPdfFile() : Cannot create external file {0}", path), MessageSeverity.Error);
                }
            }
            try
            {
                Intent intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(Uri.Parse("file://" + path), "application/pdf");
				CurrentActivity.StartActivity(intent);
            }
            catch (Exception)
            {
                try
                {
					CurrentActivity.StartActivity(new Intent(Intent.ActionView, Uri.Parse("market://search?q=pdf&c=apps")));
                }
                catch (ActivityNotFoundException)
                {
					CurrentActivity.StartActivity(new Intent(Intent.ActionView, Uri.Parse("https://play.google.com/store/search?q=pdf&c=apps")));
                }
            }

        }
Example #19
0
        public void OpenUrl(string url, string mime = null, bool extra = false)
        {
            if (!url.Contains (":/")) {
                url = "http://" + url;
            }

            var uri = global::Android.Net.Uri.Parse (url);
            Intent intent = new Intent (Intent.ActionView);
            if (mime != null)
                intent.SetDataAndType (uri, mime);
            else
                intent.SetData (uri);

            intent.AddFlags (ActivityFlags.NewTask);

            if (extra){
                Intent intent2 = new Intent (Intent.ActionView);
                intent2.SetData (uri);
                Intent[] intentArray =  { intent2 };
                intent = Intent.CreateChooser (intent, "Open");
                intent.PutExtra(Intent.ExtraInitialIntents, intentArray);
            }

            try {
                mContext.StartActivity (intent);
            } catch (Exception ex) {
                try {
                    Console.WriteLine(ex.Message);
                    Intent intent3 = new Intent (Intent.ActionView);
                    intent3.SetFlags(ActivityFlags.NewTask);
                    mContext.StartActivity (intent3);
                } catch (Exception) {
                    Log.Error ("cannot open link ", ex.Message);
                }
            }
        }
        private void StopAction(bool stopRec = true, bool popup = false)
        {
            RunOnUiThread(() =>
            {
                modeLayouts[currentMode].Visibility = ViewStates.Gone;
                startBtn.Text = "Start!";
            });

            if (stopRec)
                audioManager.StopRecording();

            if (!popup) return;

            Android.Net.Uri passedUri = Android.Net.Uri.FromFile(new Java.IO.File(AppData.TempRecording.Path));

            Android.Support.V7.App.AlertDialog alert = new Android.Support.V7.App.AlertDialog.Builder(this)
                .SetTitle("Session complete!")
                .SetMessage("Would you like to listen to your speech?")
                .SetPositiveButton("Listen", (EventHandler<DialogClickEventArgs>) null)
                .SetNeutralButton("Share recording", (EventHandler<DialogClickEventArgs>) null)
                .SetNegativeButton("Close", (arg1, arg2) => { })
                .Create();
            alert.Show();

            alert.GetButton((int) DialogButtonType.Positive).Click += (sender, e) =>
            {
                Intent intent = new Intent();
                intent.SetAction(Intent.ActionView);
                intent.SetDataAndType(passedUri, "audio/*");
                StartActivity(intent);
            };

            alert.GetButton((int) DialogButtonType.Neutral).Click += (sender, e) =>
            {
                Intent intent = new Intent();
                intent.SetAction(Intent.ActionSend);
                intent.SetType("audio/*");
                intent.PutExtra(Intent.ExtraStream, passedUri);
                StartActivity(intent);
            };
        }
Example #21
0
		private void AddMessage(LinearLayout messageList, Message elem) {
			View v = null;
			if (elem.text.StartsWith ("#image")) {
				if (elem.nick == user.user) {
					if (setting.FontSize == Setting.Size.large) {
						v = LayoutInflater.Inflate (Resource.Layout.ImageRightLarge, null);
					} else {
						v = LayoutInflater.Inflate (Resource.Layout.ImageRight, null);
					}
				} else {
					if (setting.FontSize == Setting.Size.large) {
						v = LayoutInflater.Inflate (Resource.Layout.ImageLeftLarge, null);
					} else {
						v = LayoutInflater.Inflate (Resource.Layout.ImageLeft, null);
					}
					ImageView image = v.FindViewById<ImageView> (Resource.Id.messageImage);
					new Thread (async () => {
						try {
							var imageBitmap = await network.GetImageBitmapFromUrl (Resources.GetString (Resource.String.profileUrl) + elem.nick + ".png");
							RunOnUiThread (() => image.SetImageBitmap (imageBitmap));
						} catch (Exception e) {
							Log.Error ("BlaChat", e.StackTrace);
						}
					}).Start ();
				}
				ImageView contentImage = v.FindViewById<ImageView> (Resource.Id.contentImage);
				contentImage.Click += delegate {
					string images = System.IO.Path.Combine (Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, "Pictures/BlaChat");
					var filename = elem.text.Substring ("#image ".Length);
					filename = filename.Substring (filename.LastIndexOf ("/") + 1);
					filename = System.IO.Path.Combine (images, filename);
					Intent intent = new Intent (Intent.ActionView);
					intent.SetDataAndType (Android.Net.Uri.Parse ("file://" + filename), "image/*");
					StartActivity (intent);
				};
				//contentImage.SetOnTouchListener (new TouchListener(this, elem.text.Substring ("#image ".Length)));

				new Thread (async () => {
					try {
						var uri = elem.text.Substring ("#image ".Length);
						var imageBitmap = await network.GetImageBitmapFromUrl (uri);
						RunOnUiThread (() => contentImage.SetImageBitmap (imageBitmap));
					} catch (Exception e) {
						Log.Error ("BlaChat", e.StackTrace);
					}
				}).Start ();
			} else {
				if (elem.nick == user.user) {
					if (setting.FontSize == Setting.Size.large) {
						v = LayoutInflater.Inflate (Resource.Layout.MessageRightLarge, null);
					} else {
						v = LayoutInflater.Inflate (Resource.Layout.MessageRight, null);
					}
				} else {
					if (setting.FontSize == Setting.Size.large) {
						v = LayoutInflater.Inflate (Resource.Layout.MessageLeftLarge, null);
					} else {
						v = LayoutInflater.Inflate (Resource.Layout.MessageLeft, null);
					}
					ImageView image = v.FindViewById<ImageView> (Resource.Id.messageImage);
					new Thread (async () => {
						try {
							var imageBitmap = await network.GetImageBitmapFromUrl (Resources.GetString (Resource.String.profileUrl) + elem.nick + ".png");
							RunOnUiThread (() => image.SetImageBitmap (imageBitmap));
						} catch (Exception e) {
							Log.Error ("BlaChat", e.StackTrace);
						}
					}).Start ();
				}
				TextView text = v.FindViewById<TextView> (Resource.Id.messageText);
				var escape = elem.text.Replace ("&quot;", "\"");
				escape = escape.Replace ("&lt;", "<");
				escape = escape.Replace ("&gt;", ">");
				escape = escape.Replace ("&amp;", "&");
				text.TextFormatted = SpannableTools.GetSmiledText (this, new SpannableString (escape));
			}

			TextView caption = v.FindViewById<TextView> (Resource.Id.messageCaption);
			if (elem.nick != user.user) {
				caption.TextFormatted = SpannableTools.GetSmiledText (this, new SpannableString (elem.author + " (" + elem.time.Substring (11, 5) + ")"));
			} else {
				if (elem.time == "sending") {
					caption.TextFormatted = SpannableTools.GetSmiledText (this, new SpannableString ("Du (" + elem.time + ")"));
				} else {
					caption.Text = "Du (" + elem.time.Substring (11, 5) + ")";
				}
			}
			messageList.AddView (v);
		}
        private void btnRunSample_Click(object sender, EventArgs e)
        {
            if (sampleID != null)
            {
                SampleOutputInfo[] output = null;
                MemoryStream outputStream = null;
                Assembly asm = Assembly.GetExecutingAssembly();

                switch (sampleID)
                {
                    case "actions":
                        output = Xfinium.Pdf.Samples.Actions.Run();
                        break;
                    case "annotations":
                        Stream flashInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.clock.swf");
                        Stream u3dInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.airplane.u3d");
                        output = Xfinium.Pdf.Samples.Annotations.Run(flashInput, u3dInput);
                        flashInput.Close();
                        u3dInput.Close();
                        break;
                    case "barcodes":
                        output = Xfinium.Pdf.Samples.Barcodes.Run();
                        break;
                    case "batesnumbers":
                        Stream batesNumbersInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.BatesNumbers.Run(batesNumbersInput);
                        batesNumbersInput.Close();
                        batesNumbersInput = null;
                        break;
                    case "contentextraction":
                        Stream contentExtractionInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.ContentExtraction.Run(contentExtractionInput);
                        contentExtractionInput.Close();
                        contentExtractionInput = null;
                        break;
                    case "contentstream":
                        output = Xfinium.Pdf.Samples.ContentStream.Run();
                        break;
                    case "documentappend":
                        Stream file1Input =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        Stream file2Input =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.formfill.pdf");
                        output = Xfinium.Pdf.Samples.DocumentAppend.Run(file1Input, file2Input);
                        file1Input.Close();
                        file2Input.Close();
                        break;
                    case "documentincrementalupdate":
                        outputStream = new MemoryStream();
                        Stream sri =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        byte[] buffer = new byte[8192];
                        while (true)
                        {
                            int readSize = sri.Read(buffer, 0, buffer.Length);
                            if (readSize <= 0)
                            {
                                break;
                            }
                            outputStream.Write(buffer, 0, readSize);
                        }
                        sri.Close();

                        output = Xfinium.Pdf.Samples.DocumentIncrementalUpdate.Run(outputStream);
                        break;
                    case "documentpagebypagesave":
                        outputStream = new MemoryStream();
                        output = Xfinium.Pdf.Samples.DocumentPageByPageSave.Run(outputStream);
                        break;
                    case "documentproperties":
                        output = Xfinium.Pdf.Samples.DocumentProperties.Run();
                        break;
                    case "documentsplit":
                        Stream splitInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.DocumentSplit.Run(splitInput);
                        splitInput.Close();
                        break;
                    case "encryption":
                        Stream encryptionInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.encrypted.pdf");
                        output = Xfinium.Pdf.Samples.Encryption.Run(encryptionInput);
                        encryptionInput.Close();
                        break;
                    case "fileattachments":
                        Stream attachmentStream1 = Assets.Open("fileattachments_cs.html");
                        Stream attachmentStream2 = Assets.Open("fileattachments_vb.html");
                        output = Xfinium.Pdf.Samples.FileAttachments.Run(attachmentStream1, attachmentStream2);
                        attachmentStream1.Close();
                        attachmentStream2.Close();
                        break;
                    case "fonts":
                        Stream ttfStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.verdana.ttf");
                        output = Xfinium.Pdf.Samples.Fonts.Run(ttfStream);
                        ttfStream.Close();
                        break;
                    case "formattedcontent":
                        output = Xfinium.Pdf.Samples.FormattedContent.Run();
                        break;
                    case "formfill":
                        Stream formStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.formfill.pdf");
                        output = Xfinium.Pdf.Samples.FormFill.Run(formStream);
                        formStream.Close();
                        break;
                    case "formgenerator":
                        output = Xfinium.Pdf.Samples.FormGenerator.Run();
                        break;
                    case "grayscaleconversion":
                        Stream grayscaleConversionInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.GrayscaleConversion.Run(grayscaleConversionInput);
                        grayscaleConversionInput.Close();
                        break;
                    case "images":
                        Stream imageStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.image.jpg");
                        Stream cmykImageStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.cmyk.tif");
                        Stream softMaskStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.softmask.png");
                        Stream stencilMaskStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.stencilmask.png");
                        output = Xfinium.Pdf.Samples.Images.Run(imageStream, cmykImageStream, softMaskStream, stencilMaskStream);
                        imageStream.Close();
                        cmykImageStream.Close();
                        softMaskStream.Close();
                        stencilMaskStream.Close();
                        break;
                    case "measurements":
                        output = Xfinium.Pdf.Samples.Measurements.Run();
                        break;
                    case "optionalcontent":
                        output = Xfinium.Pdf.Samples.OptionalContent.Run();
                        break;
                    case "optionalcontentextraction":
                        Stream oceInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.OptionalContentExtraction.Run(oceInput);
                        oceInput.Close();
                        break;
                    case "outlines":
                        output = Xfinium.Pdf.Samples.Outlines.Run();
                        break;
                    case "pageimposition":
                        Stream pageImpositionInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.PageImposition.Run(pageImpositionInput);
                        pageImpositionInput.Close();
                        break;
                    case "pageobjects":
                        Stream pageObjectsInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.pageobjects.pdf");
                        output = Xfinium.Pdf.Samples.PageObjects.Run(pageObjectsInput);
                        pageObjectsInput.Close();
                        break;
                    case "pdfa":
                        Stream pdfaIccInput =
                                asm.GetManifestResourceStream ("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.rgb.icc");
                        Stream pdfaTtfInput =
                                asm.GetManifestResourceStream ("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.verdana.ttf");
                        output = Xfinium.Pdf.Samples.PDFA.Run (pdfaIccInput, pdfaTtfInput);
                        pdfaIccInput.Close ();
                        pdfaTtfInput.Close ();
                        break;
                    case "portfolios":
                        Stream imagesStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.image.jpg");
                        Stream pdfStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        Stream csStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.portfolios_cs.html");
                        Stream vbStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.portfolios_vb.html");
                        output = Xfinium.Pdf.Samples.Portfolios.Run(imagesStream, pdfStream, csStream, vbStream);
                        imagesStream.Close();
                        pdfStream.Close();
                        csStream.Close();
                        vbStream.Close();
                        break;
                    case "redaction":
                        Stream redactionStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.Redaction.Run(redactionStream);
                        redactionStream.Close();
                        break;
                    case "removereplaceimages":
                        Stream removeReplaceImagesInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.RemoveReplaceImages.Run(removeReplaceImagesInput);
                        removeReplaceImagesInput.Close();
                        break;
                    case "searchtext":
                        Stream searchTextInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.SearchText.Run(searchTextInput);
                        searchTextInput.Close();
                        break;
                    case "svgtopdf":
                        Stream svgInput =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.tiger.svg");
                        output = Xfinium.Pdf.Samples.SvgToPdf.Run(svgInput);
                        svgInput.Close();
                        break;
                    case "text":
                        output = Xfinium.Pdf.Samples.Text.Run();
                        break;
                    case "tifftopdf":
                        Stream tiffStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.sample.tif");
                        output = Xfinium.Pdf.Samples.TiffToPdf.Run(tiffStream);
                        tiffStream.Close();
                        break;
                    case "type3fonts":
                        output = Xfinium.Pdf.Samples.Type3Fonts.Run();
                        break;
                    case "vectorgraphics":
                        Stream iccStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.rgb.icc");
                        output = Xfinium.Pdf.Samples.VectorGraphics.Run(iccStream);
                        iccStream.Close();
                        break;
                    case "watermarks":
                        Stream watermarkStream =
                            asm.GetManifestResourceStream("Xfinium.Pdf.SamplesExplorer.Xamarin.Android.Support.content.pdf");
                        output = Xfinium.Pdf.Samples.Watermarks.Run(watermarkStream);
                        watermarkStream.Close();
                        break;
                }

                string pdfPath = "";
                if (output != null)
                {
                    if (sampleID == "pdfa")
                    {
                        pdfPath = System.IO.Path.Combine(
                            System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), output[0].FileName);
                        Stream pdfStream = File.Open(pdfPath, FileMode.Create);
                        PdfAFormatter.Save(output[0].Document as PdfFixedDocument, pdfStream, PdfAFormat.PdfA1b);
                        pdfStream.Flush();
                        pdfStream.Close();
                    }
                    else
                    {
                        for (int i = 0; i < output.Length; i++)
                        {
                            pdfPath = System.IO.Path.Combine(
                                System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), output[i].FileName);
                            Stream pdfStream = File.Open(pdfPath, FileMode.Create);
                            output[i].Document.Save(pdfStream);
                            pdfStream.Flush();
                            pdfStream.Close();
                        }
                    }
                }

                if (outputStream != null)
                {
                    string fileName = "";
                    switch (sampleID)
                    {
                        case "documentincrementalupdate":
                            fileName = "xfinium.pdf.sample.documentincrementalupdate.pdf";
                            break;
                        case "documentpagebypagesave":
                            fileName = "xfinium.pdf.sample.documentpagebypagesave.pdf";
                            break;
                    }

                    pdfPath = System.IO.Path.Combine(
                        System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), fileName);
                    Stream pdfStream = File.Open(pdfPath, FileMode.Create);
                    outputStream.WriteTo(pdfStream);
                    pdfStream.Flush();
                    pdfStream.Close();
                }

                Java.IO.File file = new Java.IO.File(pdfPath);
                file.SetReadable(true, false);
                global::Android.Net.Uri u = global::Android.Net.Uri.FromFile(file);
                Intent intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(u, "application/pdf");
                intent.SetFlags(ActivityFlags.ClearTop);

                try
                {
                    StartActivity(intent);
                }
                catch (ActivityNotFoundException ex)
                {
                    Toast.MakeText(this, "No PDF viewer available", ToastLength.Short).Show();
                }
            }
        }
 public override void OpenPreview(Android.App.Activity androidActivity)
 {
     var intent = new Intent(Intent.ActionView);
     intent.SetDataAndType(Android.Net.Uri.Parse("file://" + AbsoluteFilePath), Java.Net.URLConnection.GuessContentTypeFromName(AbsoluteFilePath));
     androidActivity.StartActivity(intent);
 }
		void downloadAppFileCompleted (object sender, AsyncCompletedEventArgs e) {
			RunOnUiThread (() => {
				progressDialog.Dismiss ();
				if (downloadedOK) {
					var installApk = new Intent(Intent.ActionView);
					installApk.SetDataAndType(Android.Net.Uri.Parse("file://" + fullLatestAppFilename), "application/vnd.android.package-archive");
					installApk.SetFlags(ActivityFlags.NewTask);
					try {
						StartActivity(installApk);
					} catch (ActivityNotFoundException ex) {
						var errorInstalled = new AlertDialog.Builder (this).Create ();
						errorInstalled.SetTitle (Resources.GetString(Resource.String.download_error));
						errorInstalled.SetMessage (string.Format(Resources.GetString(Resource.String.download_error_description), Resources.GetString(Resource.String.app_name) + " " + latestAppVersion));
						errorInstalled.Show ();	
					}
					downloadedOK = false;
				} else {
					File.Delete(fullLatestAppFilename);
				}
			});
		}
		void downloadWhatsAppFileCompleted (object sender, AsyncCompletedEventArgs e) {
			RunOnUiThread (() => {
				progressDialog.Dismiss ();
				if (downloadedOK) {
					var installApk = new Intent(Intent.ActionView);
					installApk.SetDataAndType(Android.Net.Uri.Parse("file://" + fullLatestWhatsAppFilename), "application/vnd.android.package-archive");
					installApk.SetFlags(ActivityFlags.NewTask);
					try {
						StartActivity(installApk);
						AlertDialog deleteWhatsApp = new AlertDialog.Builder (this).Create ();
						deleteWhatsApp.SetTitle (Resources.GetString(Resource.String.delete));
						deleteWhatsApp.SetMessage (Resources.GetString(Resource.String.delete_description));
						deleteWhatsApp.SetButton ((int)DialogButtonType.Positive, Resources.GetString(Resource.String.delete_button_delete), (object senderDelete, DialogClickEventArgs eDelete) => File.Delete(fullLatestWhatsAppFilename));
						deleteWhatsApp.SetButton ((int)DialogButtonType.Negative, Resources.GetString(Resource.String.delete_button_cancel), (object senderCancel, DialogClickEventArgs eCancel) => deleteWhatsApp.Dismiss ());
						deleteWhatsApp.SetCancelable (false);
						deleteWhatsApp.Show ();
					} catch (ActivityNotFoundException ex) {
						var errorInstalled = new AlertDialog.Builder (this).Create ();
						errorInstalled.SetTitle (Resources.GetString(Resource.String.download_error));
						errorInstalled.SetMessage (string.Format(Resources.GetString(Resource.String.download_error_description), "WhatsApp " + latestWhatsAppVersion));
						errorInstalled.Show ();	
					}
					downloadedOK = false;
				} else {
					File.Delete(fullLatestWhatsAppFilename);
				}
			});
		}
Example #26
0
 void Downfile_OnFinishDownloadDBHandle(string filename)
 {
     string apkfile = filename.Replace ("zip", "apk");
     var sdcard = Path.Combine (Android.OS.Environment.ExternalStorageDirectory.Path, "erpdata");
     if (File.Exists(apkfile))
         File.Delete(apkfile);
     try {
         ZipHelper.DecompressFiles (filename, sdcard);
         Java.IO.File file = new Java.IO.File (apkfile);
         file.SetReadable (true, false);
         Intent intent = new Intent(Intent.ActionInstallPackage);
         intent.SetDataAndType (Android.Net.Uri.FromFile (file), "application/vnd.android.package-archive");
         StartActivity (intent);
     } catch (Exception ex)
     {
        Console.WriteLine(ex);
     }
 }
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // TODO: Add your update logic here

            base.Update(gameTime);

            var touches = TouchPanel.GetState();
            if (touches.Count == 0 && lastTouches.Count > 0)
            {
                var directory = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);

                //Jpeg
                var path = Path.Combine(directory.AbsolutePath, "chuck.jpg");
                var mimeType = "image/jpeg";
                using (var stream = File.Create(path))
                {
                    logoTexture.SaveAsJpeg(stream, logoTexture.Width, logoTexture.Height);
                }

                //Png
                //var path = Path.Combine(directory.AbsolutePath, "chuck.jpg");
                //var mimeType = "image/png";
                //using (var stream = File.Create(path))
                //{
                //    logoTexture.SaveAsPng(stream, logoTexture.Width, logoTexture.Height);
                //}

                var intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(Android.Net.Uri.Parse("file://" + path), mimeType);
                Game.Activity.StartActivity(intent);
            }
            lastTouches = touches;
        }
Example #28
0
        internal void OpenBinaryFile(Android.Net.Uri uri)
        {
            String theMimeType = GetMimeType(uri.Path);
            if (theMimeType != null)
            {

                Intent theIntent = new Intent(Intent.ActionView);
                theIntent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ExcludeFromRecents);
                theIntent.SetDataAndType(uri, theMimeType);
                try
                {
                    StartActivity(theIntent);
                }
                catch (ActivityNotFoundException)
                {
                    //ignore
                    Toast.MakeText(this, "Couldn't open file", ToastLength.Short).Show();
                }
            }
        }
Example #29
0
        private void DownLoadApp()
        {
            ProgressBar progressBar = FindViewById<ProgressBar>(Resource.Id.Loading_progressBar1);
            TextView Msg = FindViewById<TextView>(Resource.Id.Loading_Msg);
            progressBar.Max = 100;
            RunOnUiThread(() =>
            {
                Msg.Text = "正在准备下载,请耐心等待.下载完成后按提示安装";
            });
            string str = of_update(progressBar, Msg);
            if (str.Substring(0, 2) != "ER")//下载完成
            {
                RunOnUiThread(() =>
                {
                    Msg.Text = "按提示进行安装安装,长按文字返回上一页";
                });
                try
                {
                    Msg.LongClick += delegate { StartActivity(typeof(Config)); };
                    Java.IO.File apkfile = new Java.IO.File(str);
                    Intent intent = new Intent(Intent.ActionView);
                    intent.AddFlags(ActivityFlags.NewTask);
                    intent.SetAction(Android.Content.Intent.ActionView);
                    intent.SetDataAndType(Android.Net.Uri.FromFile(apkfile),
                    "application/vnd.android.package-archive");
                    StartActivity(intent);
                }
                catch
                {
                    SysVisitor.DeleteFolder(str.Substring(0, str.LastIndexOf('/')));
                    for (int i = 0; i < 5; i++)
                    {
                        RunOnUiThread(() =>
                        {
                            Msg.Text = "下载的文件有误,可能是由于网络问题下载失败或在下载过程中用户退出,导致文件未下载完成,错误文件已成功清除" + (5 - i) + "秒后自动返回主页面"; ;
                        });
                        Thread.Sleep(1000);
                    }
                    SysVisitor.Log("Loading.DownLoadApp", "下载的文件有误,可能是由于网络问题下载失败或在下载过程中用户退出,导致文件未下载完成,错误文件已成功清除");
                    StartActivity(typeof(Index));
                }
            }
            else
            {
                for (int i = 0; i < 5; i++)
                {
                    RunOnUiThread(() =>
                    {
                        Msg.Text = str + (5 - i) + "秒后自动返回主页面";
                    });

                }
            }
        }
Example #30
0
 private async void InitStreamAvailable(IBouquetItemService service)
 {
     try
     {
         //check if we have all the info
         if (!ConnectionManager.Connected || service == null || service.Reference == null || ConnectionManager.CurrentProfile == null || !ConnectionManager.CurrentProfile.Streaming)
             return;
         var profile = ConnectionManager.CurrentProfile;
         string link = null;
         bool portAvailable = false;
         int originalPort;
         int streamPort = 0;
         string enigma1ServiceParameters = string.Empty;
         if (profile.Transcoding)
         {
             originalPort = profile.TranscodingPort;
             //check if transcoding port is available
             portAvailable = await Network.CheckPortOpen(profile.Address, originalPort);
             if (portAvailable)
                 originalPort = profile.TranscodingPort;
             else
             {
                 portAvailable = await Network.CheckPortOpen(profile.Address, 8002);
                 if (portAvailable)
                     originalPort = 8002;
                 else
                     //transcoding port is not available, fallback to regular stream port
                     originalPort = profile.StreamingPort;
             }
         }
         else
         {
             originalPort = profile.StreamingPort;
         }
         //check if specified streaming port is available
         if (!portAvailable)
             portAvailable = await Network.CheckPortOpen(profile.Address, originalPort);
         if (!portAvailable || profile.Enigma == EnigmaType.Enigma1)
         {
             //we need original streaming parameters from the receiver
             var streamParametersResponse = await ReadStreamParameters(service);
             if (streamParametersResponse == null)
             {
                 //failed to get original parameters
                 if (profile.Enigma == EnigmaType.Enigma1)
                 {
                     //we need additional parameters for Enigma1
                     ShowStreamStatusToast(context.GetString(Resource.String.err_failed_to_initialize_stream));
                     return;
                 }
             }
             else
             {
                 Uri streamUri = new Uri(streamParametersResponse.StreamUrl);
                 enigma1ServiceParameters = streamUri.AbsolutePath;
                 //we have stream parameters from the receiver
                 if (!portAvailable)
                 {
                     //receiver specified different port for streaming
                     if (streamUri.Port != originalPort)
                     {
                         //check if alternative port is available
                         portAvailable = await Network.CheckPortOpen(profile.Address, streamUri.Port);
                         if (portAvailable)
                         {
                             //notify user about port change
                             streamPort = streamUri.Port;
                             Toast.MakeText(context, string.Format(context.GetString(Resource.String.warn_using_alternative_port), streamUri.Port), ToastLength.Short).Show();
                         }
                     }
                     else
                     {
                         //port is not available, receiver returned the same port
                         ShowStreamStatusToast(string.Format("{0}:{1} {2}", profile.Address, originalPort, context.GetString(Resource.String.err_port_not_available)));
                         return;
                     }
                 }
                 else
                 {
                     //we have stream parameters, specified streaming port in profile is available
                     streamPort = originalPort;
                 }
             }
             if (!portAvailable)
             {
                 ShowStreamStatusToast(string.Format("{0}:{1} {2}", profile.Address, originalPort, context.GetString(Resource.String.err_port_not_available)));
                 return;
             }
         }
         else
         {
             //port is avialable, it's Enigma2
             streamPort = originalPort;
             if (profile.Transcoding && streamPort != profile.TranscodingPort)
                 Toast.MakeText(context, string.Format(context.GetString(Resource.String.warn_using_alternative_port), streamPort), ToastLength.Short).Show();
         }
         if (profile.Enigma == EnigmaType.Enigma2)
             //http://example.com:8001/
             link = string.Format("http://{0}:{1}/{2}", profile.Address, streamPort, service.Reference);
         else
             //http://dm600pvr:31339/0,61,1ff,200
             link = string.Format("http://{0}:{1}{2}", profile.Address, streamPort, enigma1ServiceParameters);
         link = System.Uri.EscapeUriString(link);
         ShowStreamStatusToast(context.GetString(Resource.String.inf_initializing_stream));
         Intent intent = new Intent(Intent.ActionView);
         intent.SetDataAndType(Android.Net.Uri.Parse(link), "video/*");
         Log.Debug(TAG, "Requesting stream for link " + link);
         context.StartActivity(intent);
     }
     catch (Exception ex)
     {
         Log.Error(TAG, string.Format("Failed to initialize stream! {0}", ex.Message));
         ShowStreamStatusToast(string.Format("{0} {1}", context.GetString(Resource.String.err_failed_to_initialize_stream), ex.Message));
     }
 }
Example #31
0
        // int SHOT_TYPE;

        protected async override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.screenshot_activity);
            mToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);       
            SetSupportActionBar(mToolbar);
            SupportActionBar.SetDisplayShowHomeEnabled(true);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.Title = GetString(Resource.String.action_screenshot);
            iView = FindViewById<ImageView>(Resource.Id.ivScreenShot);
            iView.Click += (sender, e) =>
            {
               
                var content = GetBytesFromDrawable(iView.Drawable);

                //make sure we have something to show in the first place
                if (content != null && iView.Drawable != defaultImage)
                {
                        
                    //there is no external storage available, Gallery cannot show internal cache image
                    if (FileSystem.GetTmpDir(this) == CacheDir.AbsolutePath)
                        return;
                       
                    try
                    {
                        if (SaveFile(GetTmpFileName(), content))
                        {
                            Intent intent = new Intent();
                            intent.SetAction(Intent.ActionView);
                            intent.SetDataAndType(Android.Net.Uri.Parse("file://" + GetTmpFileName()), "image/*");
                            StartActivity(intent);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(TAG, string.Format("Error launching image view intent! {0}", ex.Message));
                    }
                }
            };
            pbScreenShot = FindViewById<ProgressBar>(Resource.Id.pbScreenShot);
            defaultImage = iView.Drawable;
            layoutPb = FindViewById<LinearLayout>(Resource.Id.layoutPb);
            bottomToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar_bottom);
            bottomToolbar.InflateMenu(Resource.Menu.menu_screenshot);
            screenshotAll = bottomToolbar.Menu.FindItem(Resource.Id.action_screenshot_all);
            screenshotOSD = bottomToolbar.Menu.FindItem(Resource.Id.action_screenshot_osd);
            screenshotPicture = bottomToolbar.Menu.FindItem(Resource.Id.action_screenshot_picture);
            saveMenu = bottomToolbar.Menu.FindItem(Resource.Id.action_save);
            saveMenu.SetVisible(FileSystem.IsExternalStorageWritable());
            bottomToolbar.MenuItemClick += (sender, e) =>
            {
                if (e.Item.ItemId == Resource.Id.action_screenshot_all)
                {
                    TakeScreenshot(ScreenshotType.All);
                    e.Handled = true;
                }
                else if (e.Item.ItemId == Resource.Id.action_screenshot_osd)
                {
                    TakeScreenshot(ScreenshotType.Osd);
                    e.Handled = true;
                }
                else if (e.Item.ItemId == Resource.Id.action_screenshot_picture)
                {
                    TakeScreenshot(ScreenshotType.Picture);
                    e.Handled = true;
                }
                else if (e.Item.ItemId == Resource.Id.action_save)
                {
                    SaveToDisk();
                    e.Handled = true;
                }
            };
            //bundle = this.Intent.Extras;
            //SHOT_TYPE = bundle.GetInt("SHOT_TYPE");
            if (bundle != null)
            {
                var cachedScreenshotPath = bundle.GetString(cachedImage);
                if (!string.IsNullOrEmpty(cachedScreenshotPath))
                {
                    var cachedScreenShot = LoadTmpFile(); 
                    if (cachedScreenShot != null)
                    {
                        layoutPb.Visibility = ViewStates.Gone;
                        iView.Visibility = ViewStates.Visible; 
                        var bitmap = CreateBitmapFromBytes(cachedScreenShot);
                        iView.SetImageBitmap(bitmap);
                    }
                }
            }
            else
            {
                TakeScreenshot(ScreenshotType.All);
            }   
        }
        Intent CreateProperIntent(HistoryItem item)
        {
            var intent = new Intent ();
                        intent.SetAction (Intent.ActionView);

                        if (!string.IsNullOrEmpty (item.Outgoing)) {
                                var uri = Android.Net.Uri.Parse (item.LocalPath);
                                intent.SetDataAndType (uri, GetMimeTypeForFile (GetDisplayNameFromURI (uri)));
                        } else {
                                var uri = Android.Net.Uri.FromFile (new Java.IO.File (item.LocalPath));
                                intent.SetDataAndType (uri, GetMimeTypeForFile (item.LocalPath));
                        }

                        return intent;
        }
		private void InStallApk()
		{
			var file = new Java.IO.File (saveFileName);
			if (!file.Exists ()) {
				return;
			}
			//通过Intent安装新的apk文件
			Intent intent = new Intent(Intent.ActionView);
			intent.SetDataAndType (Android.Net.Uri.Parse ("file://"+saveFileName.ToString()), "application/vnd.android.package-archive");
			context.StartActivity (intent);

		}