Skip to content

Commit b5e86e5

Browse files
committed
Added intent filter for open with
Added functionality to read the file from Intent data
1 parent 6881ed1 commit b5e86e5

3 files changed

Lines changed: 47 additions & 4 deletions

File tree

BasicPlainTextReaderApp/BasicPlainTextReaderApp.Android/MainActivity.cs

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,67 @@
22

33
using Android.App;
44
using Android.Content.PM;
5+
using Android.Content;
56
using Android.Runtime;
67
using Android.Views;
78
using Android.Widget;
89
using Android.OS;
10+
using System.IO;
11+
using Android.Provider;
12+
using System.Text;
913

1014
namespace BasicPlainTextReaderApp.Droid
1115
{
12-
[Activity(Label = "Basic Plain Text Reader", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )]
16+
[Activity(Label = "Basic Plain Text Reader",
17+
Icon = "@mipmap/icon",
18+
Theme = "@style/MainTheme",
19+
MainLauncher = true,
20+
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
21+
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault }, DataMimeType = @"*/*")]
1322
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
1423
{
1524
protected override void OnCreate(Bundle savedInstanceState)
1625
{
26+
string action = Intent.Action;
27+
string type = Intent.Type;
28+
StringBuilder sb = null;
29+
30+
if(Intent.ActionView.Equals(action) && !string.IsNullOrEmpty(type))
31+
{
32+
Android.Net.Uri fileUri = Intent.Data;
33+
if (fileUri != null)
34+
{
35+
try
36+
{
37+
using (var parcelFileDescriptor = ContentResolver.OpenFileDescriptor(Intent.Data, "r"))
38+
using (Java.IO.FileDescriptor fileDescriptor = parcelFileDescriptor.FileDescriptor)
39+
using (var reader = new Java.IO.FileReader(fileDescriptor))
40+
using (var bufferedReader = new Java.IO.BufferedReader(reader))
41+
{
42+
string line;
43+
sb = new StringBuilder();
44+
while ((line = bufferedReader.ReadLine()) != null)
45+
{
46+
sb.AppendLine(line);
47+
}
48+
}
49+
}
50+
catch (Exception e)
51+
{
52+
sb = new StringBuilder();
53+
sb.AppendLine(e.ToString());
54+
}
55+
}
56+
}
57+
1758
TabLayoutResource = Resource.Layout.Tabbar;
1859
ToolbarResource = Resource.Layout.Toolbar;
1960

2061
base.OnCreate(savedInstanceState);
2162

2263
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
2364
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
24-
LoadApplication(new App());
65+
LoadApplication(new App(sb.ToString()));
2566
}
2667
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
2768
{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="dev.jonwolf.basicplaintextreaderapp" android:installLocation="auto">
33
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
4+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
45
<application android:label="Basic Plain Text Reader" android:theme="@style/MainTheme"></application>
56
</manifest>

BasicPlainTextReaderApp/BasicPlainTextReaderApp/App.xaml.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ namespace BasicPlainTextReaderApp
77
{
88
public partial class App : Application
99
{
10-
11-
public App()
10+
string _text;
11+
public App(string text = null)
1212
{
1313
InitializeComponent();
1414

15+
_text = text;
1516
MainPage = new AppShell();
1617
}
1718

0 commit comments

Comments
 (0)