Open top menu

Security Tips for Android Applications.

Android has built-in security feature that significantly reduce the frequency and impact of application security issue.

1.       An application framework with robust implementation of common security functionality such as cryptography ,permission.
2.       Technologies like ASLR. NX, ProPolice , safe_iop ,OpenBSd DlMalloc, OpenBSD Calloc,risk associated with common memory Management errors.
3.       An Encrypted file system that can be enabled to protect data on lost or stolen Devices.
4.       Application-defined permission to control application data on n application.
5.       User granted permission to restrict access to system feature and user data.


Storing Data

The most common security concern for an application on android.
1.       Internal Storage:-Avoid the MODE_WORLD_WRITEABLE or MODE_WORLD_READABLE for IPC files because they do not provide the ability to limit data access to particular application, nor do they provide any control of data format. You can encrypt local files using a key that is not directly accessible to the application.

2.  External Storage:-File created on external storage, such as SD cards, are globally readable and Writable. Because external storage can be removed by the user and also modified by any application .you should not store executables or class files on external storage prior or dynamic loading.

3.  Content Providers:-creating a content Provider that is exported for use by other application, you can specify a single permission for reading and writing, or you can specify distinct permission for reading and writing. You should limit your permission to those required to accomplish the task at hand.


Permission

You should minimize the number of permission that your app request. Restricting access to sensitive permission reduces the risk .your application in a way that does not require any permission that is preferable.
Generally, you can create permission strive to define as few permission as possible while satisfying your security requirement.





















































Read more





Introduced Latest Android Version(8.0 Oreo).


The Android Oreo Luanch latest Android(8.0) version.Oreo smarter ,faster,and more powerful.Android 8.0 (API level 26) introduces a variety of new feature and capabilities for users and developers.


1.       Picture-in-Picture mode:-PIP is a special type of multi-window mode mostly used foe video playback.

2.       Notifications:-
(a)    Notification channels:- that’s allow you to create a user-cutomizable channel foe each type.of notification you want to display.
(b)   Notification dots:-Displaying dots,or badges ,on  app launcher icon.
(c)    Snoozing:-Which causes them to disapper for a priod of time before reappering.
(d)   Notification timeout:-you can set a time when creating a notification using SetTimeoutAfter().
(e)   Notification settings:-you can call setSettingTExt() set to the text.that appers when you create alink to your apps notification settings .
(f)     Notification:-User can dismiss notification themselves,and apps can remove them programmatically.
(g)    Background Colors:- you can set and enabled a background color for a notification.
(h)   Messaging style:- Use the MessagingStyle class diplay more content in teir collapsed form.
3.       Autofill Framwork:- User can save time filling out forms by using autofill in their devices.filling forms , such as account and credit card forms, easier with the introduction of the autofill framework.

4.       Downloadable fonts:-Android support Library 26 introduce support for api to request fonts from a provide application instead of bundling files into tha apk or letting athe apkdownload font.

5.        Shortcuts Pinning:-you can create Pinned shortcuts. Unlike static and dynamic shortcuts, pinned shortcuts appears in supported launchers as seprate icon.

6.       Webview feature:-Android provides several Apis to help you manage the Webview Objects that display web content in your app.

7.       Fontin XML:- introduced a new feature, fonts in XML.you can add the Font File in the res/font/   folder to bundle fonts as resoures. Thes fonts are compiled in your R file and are Automatically Available in Android Studio.

8.       Adaptive icon:-Introduces adaptive launcher icons, which can display a varity of sahpes across different device models. For Example an adaptive launcher icon can display a circular shape on one OEM device and display a squirecle o another device. Each device OEM provide a mask. Which the system then used to render all adaptive icons with same shape.

9.       Wide-gamut color:- To allow conversion between color spaces, this implementation uses the CIE XYZ profile connection space(PCS).

10.    Multidisplay Support:-the platform offers enhance support for multiple daiplays.if an activity support  multi-window mode and is running on a dvice with multiple display,users can move the activity from one display to another.

11.   Autosizing TextView:- you can set the size ofyour text expand or contract automatically based on the size of the textView. This means, it is much easier o potimize the text size on different screens or with dynamic content.
















Read more


Read PDF file via assets folder in Android Studio


In this tutorial explain how to read pdf file assets folder.
I have used PDF Read Library .

Step 1. Create Android Project.

Step 2. Add Permission in Manifest file.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Step 3.Add dependencies .
compile 'com.github.barteksc:android-pdf-viewer:2.7.0-beta.1'
Step 4. Create activity_main.xml.
 
xml version="1.0" encoding="utf-8"?> <LinearLayout 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:layout_height="match_parent"     android:orientation="vertical">     <Button         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Android Begginer Point"         android:textAllCaps="true"         android:textStyle="bold"         android:textColor="#FF439934"         />     <com.github.barteksc.pdfviewer.PDFView         android:id="@+id/pdfView"         android:layout_width="match_parent"         android:layout_height="match_parent" /> </LinearLayout>
Step 5. Create MainActivity.java.
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.pdf.PdfRenderer;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.github.barteksc.pdfviewer.PDFView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MainActivity extends AppCompatActivity {

    private static final String FILENAME = "sit.pdf";
    PDFView ReadTxt;
   
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ReadTxt=(PDFView)findViewById(R.id.pdfView);
        File file = new File(this.getCacheDir(), FILENAME);
        if (!file.exists()) {
            try {
                InputStream asset = this.getAssets().open(FILENAME);
                ReadTxt.fromStream(asset)
                        .pages(0, 2, 1, 3, 3, 3)
                        .enableSwipe(true)
                        .swipeHorizontal(false)
                        .enableDoubletap(true)
                        .defaultPage(0)
                        .enableAnnotationRendering(false)
                        .password(null)
                        .scrollHandle(null)
                        .enableAntialiasing(true)
                        .spacing(0)
                        .load();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else {
           Toast.makeText(getApplicationContext(),
"File not found",Toast.LENGTH_LONG).show();
        }
    }

    @Override    protected void onStart() {
        super.onStart();
    }

}



try this.........




Read more






In this tutorial explain how to Create / Delete Multiple text file Inside Root Folder  and every text file Size is 5Mb .

private File createEVENTFileWriter() {

    File filelog = null;

    try {

        String root = Environment.getExternalStorageDirectory().toString();
        File myDir = new File(root + "/" + log_foldereventname);
        myDir.mkdirs();
        String h = DateFormat.format("MM-dd-yyyyy ss",System.currentTimeMillis()).toString();
        filelog = new File(myDir, log_filenameevent);
        filelog.createNewFile();
        long fileSizeInBytes = filelog.length();
        long fileSizeInKB = fileSizeInBytes / 1024;

        if (fileSizeInKB > 5000) {

            File from = new File(myDir, log_filenameevent);
            File to = new File(myDir, h + log_filenameevent);
            if (from.exists()) {
                from.renameTo(to);

            }
        }

    } catch (Exception err) {
        fileWriteCreationFailed = true;
        err.printStackTrace();
    }
    return filelog;

}
 

public void DeletOlderFolder() {
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir =
new File(root + "/" + log_foldereventname);
    myDir.mkdirs();
    File list[] = myDir.listFiles();
   
for (int i = 0; i < list.length; i++) {
       
long diff = new Date().getTime() - list[i].getAbsoluteFile().lastModified();
       
if (diff >  3 * 24 * 60 * 60 * 1000) {//3 * 24 * 60 * 60 * 1000(3days)
           
list[i].getAbsoluteFile().delete();
        }
    }
Read more




Explain- The Log file delete alternate in  3 days.


import android.content.Context;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;


public class LogFile {

    Context context;

     public LogFile ( ) {

        DeletOlderFolder();
    }

    public void DeletOlderFolder(){

        File file=new File("sdcard/LoungeLogFile.txt");

        if(file != null) {

            long diff = new Date().getTime() - file.lastModified();

            if (diff > 3 * 24 * 60 * 60 * 1000) {

                file.delete();

            }

        }

    }

}
 
 

public class MainActivity extends Activity  {
 
@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
 
 
new LogFile (); // Delete Log file in 3 days
 
 
}
}


Read more