diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3613f1d5f6b9a55c2e45772803bfa641d819a833..4d454786cd56bf68efc7a046444b5c90fed489e8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
     <application
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
+        android:requestLegacyExternalStorage="true"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
@@ -34,8 +35,18 @@
                 android:name="android.accessibilityservice"
                 android:resource="@xml/serviceconfig" />
         </service>
-    </application>
 
+        <provider
+            android:authorities="com.example.accessibilityserviceappv2.fileprovider"
+            android:name="androidx.core.content.FileProvider"
+            android:grantUriPermissions="true"
+            android:exported="false">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/provider_paths"/>
+        </provider>
+
+    </application>
 
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accessibilityserviceappv2/CustomButton.java b/app/src/main/java/com/example/accessibilityserviceappv2/CustomButton.java
index 9271232359f95c81079dbf97405a3350f8b2d219..3166ebbdbd8a8a039920b08f58d3c1a467175ead 100644
--- a/app/src/main/java/com/example/accessibilityserviceappv2/CustomButton.java
+++ b/app/src/main/java/com/example/accessibilityserviceappv2/CustomButton.java
@@ -99,11 +99,7 @@ public class CustomButton extends androidx.appcompat.widget.AppCompatButton /*im
 
     }
 */
-    public void openDialog(){
 
-        ExampleDialog exampleDialog = new ExampleDialog();
-
-    }
 
     public String showContent(){
         return this.contentDescription;
diff --git a/app/src/main/java/com/example/accessibilityserviceappv2/MainActivity.java b/app/src/main/java/com/example/accessibilityserviceappv2/MainActivity.java
index 46c36c2df4a85384da2a040ce196147517cad755..f605eeaf5cc2ef0c56ed6d74d8f4903496a2a649 100644
--- a/app/src/main/java/com/example/accessibilityserviceappv2/MainActivity.java
+++ b/app/src/main/java/com/example/accessibilityserviceappv2/MainActivity.java
@@ -1,8 +1,28 @@
 package com.example.accessibilityserviceappv2;
 
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.FileProvider;
 
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.Toast;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
 
 public class MainActivity extends AppCompatActivity {
 
@@ -10,5 +30,92 @@ public class MainActivity extends AppCompatActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
+        ActivityCompat.requestPermissions(MainActivity.this, new String[]{WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE}, 1);
+
+        Button testButoon = (Button) findViewById(R.id.button25);
+
+        Context context = getApplicationContext();
+
+        testButoon.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                export();
+            }
+        });
+
+
+    }
+
+
+
+    private String readFromFile(Context context) {
+
+        String ret = "";
+
+        try {
+            InputStream inputStream = context.openFileInput("mytesttext.txt");
+
+            if ( inputStream != null ) {
+                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+                String receiveString = "";
+                StringBuilder stringBuilder = new StringBuilder();
+
+                while ( (receiveString = bufferedReader.readLine()) != null ) {
+                    stringBuilder.append("\n").append(receiveString);
+                }
+
+                inputStream.close();
+                ret = stringBuilder.toString();
+            }
+        }
+        catch (FileNotFoundException e) {
+            Log.e("login activity", "File not found: " + e.toString());
+        } catch (IOException e) {
+            Log.e("login activity", "Can not read file: " + e.toString());
+        }
+
+        return ret;
+    }
+
+
+    public void export(){
+
+        //generate data
+        StringBuilder data = new StringBuilder();
+        data.append("Time, Distance");
+        for(int i = 0; i<5; i++ ){
+            data.append("\n"+String.valueOf(i)+","+String.valueOf(i*i));
+        }
+
+        try{
+            //saving the file into device
+            FileOutputStream out = openFileOutput("data.csv", Context.MODE_PRIVATE);
+            out.write((data.toString()).getBytes());
+            out.close();
+
+
+            //exporting
+            Context context = getApplicationContext();
+
+
+            File filelocation = new File(getFilesDir(), "mytesttext.txt");
+            Uri path = FileProvider.getUriForFile(context, "com.example.accessibilityserviceappv2.fileprovider", filelocation);
+            Intent fileIntent = new Intent(Intent.ACTION_SEND);
+            //fileIntent.setAction(Intent.ACTION_SEND);
+            fileIntent.setType("text/csv");
+            fileIntent.putExtra(Intent.EXTRA_SUBJECT, "Data");
+            fileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            fileIntent.putExtra(Intent.EXTRA_STREAM, path);
+            //fileIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+            //fileIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(Intent.createChooser(fileIntent, "Send Mail"));
+
+        }
+        catch (Exception e){
+            e.printStackTrace();
+        }
+
+
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accessibilityserviceappv2/MyAccessibilityServiceV2.java b/app/src/main/java/com/example/accessibilityserviceappv2/MyAccessibilityServiceV2.java
index 5ee6dd0f2316531f51d6ac03d02400ac3ab78f0e..5e21c02e7430386ab751b6f9e2b75ff0dfbdcd35 100644
--- a/app/src/main/java/com/example/accessibilityserviceappv2/MyAccessibilityServiceV2.java
+++ b/app/src/main/java/com/example/accessibilityserviceappv2/MyAccessibilityServiceV2.java
@@ -1,8 +1,11 @@
 package com.example.accessibilityserviceappv2;
 
 import android.accessibilityservice.AccessibilityService;
+import android.content.ComponentName;
+import android.content.Intent;
 import android.graphics.drawable.ShapeDrawable;
 import android.graphics.drawable.shapes.RectShape;
+import android.net.Uri;
 import android.text.Html;
 import android.util.Log;
 import android.view.ViewGroup;
@@ -31,8 +34,20 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.FileProvider;
+
 import org.w3c.dom.Text;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -40,6 +55,10 @@ import java.util.List;
 
 import java.util.List;
 
+import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+import static java.net.Proxy.Type.HTTP;
+
 public class MyAccessibilityServiceV2 extends AccessibilityService {
 
     FrameLayout mLayout;
@@ -82,6 +101,7 @@ public class MyAccessibilityServiceV2 extends AccessibilityService {
                 case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: {
 
                     logNodeHierarchy(getRootInActiveWindow(), 0);
+                    addExportButton();
                 }
 
                 case AccessibilityEvent.TYPE_VIEW_CLICKED: {
@@ -358,4 +378,181 @@ public class MyAccessibilityServiceV2 extends AccessibilityService {
 
     }
 
-}
+
+    public void addExportButton(){
+
+        Context context = getApplicationContext();
+
+
+        Button exportButton = new Button(this);
+        exportButton.setText("Export Button");
+
+        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
+
+
+        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+
+        lp.type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
+        lp.format = PixelFormat.TRANSLUCENT;
+        lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+        // lp.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
+        lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
+        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        //lp.alpha = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+        lp.gravity = Gravity.TOP;
+        lp.x = 0;
+        lp.y = 0;
+
+        exportButton.setOnClickListener(new View.OnClickListener(){
+            public void onClick(View v){
+                //export();
+                //emailTest();
+                //intentTest();
+                String btnNumber = "Test Anzahl " + btnCounter;
+                //writeFileOnInternalStorage(context, "testFilename", "testFileBodyText");
+                //writeToFile(btnNumber, context);
+                String testText = readFromFile(context);
+                Log.v(LOG_TAG, testText);
+
+            }
+        });
+
+
+        wm.addView(exportButton, lp);
+
+    }
+
+
+    public void export(){
+
+        //generate data
+        StringBuilder data = new StringBuilder();
+        data.append("Time, Distance");
+        for(int i = 0; i<5; i++ ){
+            data.append("\n"+String.valueOf(i)+","+String.valueOf(i*i));
+        }
+
+        try{
+            //saving the file into device
+            FileOutputStream out = openFileOutput("data.csv", Context.MODE_PRIVATE);
+            out.write((data.toString()).getBytes());
+            out.close();
+
+            /*
+            //exporting
+            Context context = getApplicationContext();
+            File filelocation = new File(getFilesDir(), "data.csv");
+            Uri path = FileProvider.getUriForFile(context, "com.example.accessibilityserviceappv2.fileprovider", filelocation);
+            Intent fileIntent = new Intent();
+            fileIntent.setAction(Intent.ACTION_SEND);
+            fileIntent.putExtra(Intent.EXTRA_SUBJECT, "Data");
+            fileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            fileIntent.putExtra(Intent.EXTRA_STREAM, path);
+            fileIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+            //fileIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(Intent.createChooser(fileIntent, "Send Mail"));
+             */
+        }
+        catch (Exception e){
+            e.printStackTrace();
+        }
+
+
+    }
+
+    public void emailTest(){
+/*        Intent emailIntent = new Intent(Intent.ACTION_SEND);
+        //Intent emailIntent = new Intent(App.getContext(), App.class);
+        emailIntent.setType("text/html");
+        emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // recipients
+        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
+        emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
+        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
+        emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        emailIntent.setComponent(new ComponentName(getApplicationContext().getPackageName(),  App.class.getName()));
+
+        startActivity(Intent.createChooser(emailIntent, "Send Email"));*/
+// You can also attach multiple items by passing an ArrayList of Uris
+
+    }
+
+    public void intentTest(){
+        Intent intent = new Intent();
+        intent.setAction(Intent.ACTION_MAIN);
+        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        ComponentName cn = new ComponentName(this, MainActivity.class);
+        intent.setComponent(cn);
+        startActivity(intent);
+    }
+
+
+    public void writeFileOnInternalStorage(Context mcoContext, String sFileName, String sBody){
+        File dir = new File(mcoContext.getFilesDir(), "mydir");
+
+/*
+        try {
+            File myFile = new File("Your File name");
+            myFile.createNewFile();
+            FileOutputStream fOut = new FileOutputStream(myFile);
+            OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut);
+            myOutWriter.append("testtext");
+            myOutWriter.close();
+            fOut.close();
+            Toast.makeText(getApplicationContext(), "Done writing SD 'mysdfile.txt", Toast.LENGTH_SHORT).show();
+
+        }
+        catch (Exception e)
+        {
+            Toast.makeText(getApplicationContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
+        }*/
+
+
+
+    }
+
+    private void writeToFile(String data,Context context) {
+        try {
+            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("mytesttext.txt", Context.MODE_PRIVATE));
+            outputStreamWriter.write(data);
+            outputStreamWriter.close();
+        }
+        catch (IOException e) {
+            Log.e("Exception", "File write failed: " + e.toString());
+        }
+    }
+
+    private String readFromFile(Context context) {
+
+        String ret = "";
+
+        try {
+            InputStream inputStream = context.openFileInput("mytesttext.txt");
+
+            if ( inputStream != null ) {
+                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+                String receiveString = "";
+                StringBuilder stringBuilder = new StringBuilder();
+
+                while ( (receiveString = bufferedReader.readLine()) != null ) {
+                    stringBuilder.append("\n").append(receiveString);
+                }
+
+                inputStream.close();
+                ret = stringBuilder.toString();
+            }
+        }
+        catch (FileNotFoundException e) {
+            Log.e("login activity", "File not found: " + e.toString());
+        } catch (IOException e) {
+            Log.e("login activity", "Can not read file: " + e.toString());
+        }
+
+        return ret;
+    }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 439d3a057058bed3d97c7cd94299ae8d3818ea9c..43c711c7fc3d7ad5c87b63b13009e7c033821991 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -17,12 +17,14 @@
         app:layout_constraintTop_toTopOf="parent" />
 
     <androidx.appcompat.widget.AppCompatButton
-        android:id="@+id/button2"
+        android:id="@+id/button25"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="Button"
+        android:text="Export Data"
         app:layout_constraintBottom_toTopOf="@+id/textView"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.548" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/floatingwindow.xml b/app/src/main/res/layout/floatingwindow.xml
new file mode 100644
index 0000000000000000000000000000000000000000..43cfc8095ae4639a21dde99a2fec72baaf83cdcd
--- /dev/null
+++ b/app/src/main/res/layout/floatingwindow.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:minHeight="250dp"
+    android:layout_height="wrap_content"
+    android:background="@color/LightGrey">
+
+    <TextView
+        android:id="@+id/textView2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="This is the floating text view\n Hallo"
+        android:lineSpacingExtra="20sp"
+        android:fontFamily="sans-serif-thin"
+        android:textColor="@color/Black"
+        android:textSize="20sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.497"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.155" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000000000000000000000000000000000000..71f66a96b5a0b43c3164534d1b397fe08a769a23
--- /dev/null
+++ b/app/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,5 @@
+<paths>
+    <files-path
+        name="data"
+        path="./"/>
+</paths>
\ No newline at end of file