Skip to main content

Granting SYSTEM_ALERT_WINDOW on Android 6.0/Marshmallow

From android 6.0 this permission needs to grant dynamically,

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

Throwing below permission denied error on 6.0,

Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@86fb55b -- permission denied for this window type

Solution :-

Requesting Overlay permission as below,

if(!Settings.canDrawOverlays(this)){
// ask for setting
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_OVERLAY_PERMISSION);
}

Check for the result,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_OVERLAY_PERMISSION) {
        if (Settings.canDrawOverlays(this)) {
            // permission granted...
        }else{
            // permission not granted...
}
    }
}

Comments

Popular posts from this blog

Adding Call log entries in Native Call Logs

While adding call logs we can set number in CallLog.Calls.NUMBER field , same for date  and duration. CallLog.Calls.CACHED_NAME will be filled with the cached name in case if the number is already saved in Contacts database. ContentValues values = new ContentValues(); values.put(CallLog.Calls.NUMBER, number); values.put(CallLog.Calls.DATE, System.currentTimeMillis()); values.put(CallLog.Calls.DURATION, 0); values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE); //Type of call Outgoing/Incoming/Missed etc values.put(CallLog.Calls.NEW, 1); values.put(CallLog.Calls.CACHED_NAME, ""); values.put(CACHED_NUMBER_TYPE, 0); values.put(CACHED_NUMBER_LABEL, ""); this.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); Below Permissions are required to add call logs , add it in Manifest file, <uses-permission android:name="android.permission.WRITE_CALL_LOG"></uses-permission> <uses-permission android:name="android.perm...

Implementing RecyclerView

I'm working on Android hybrid apps from last 5 years, its very tough to stay in touch with Native android UI, Now I started learning through sample applications, so thought of sharing my learning here.           RecyclerView has came with Material design in Android Lollipop, RecyclerView is advanced, flexible version of Listview, RecyclerView uses the view holder pattern  and improve the performance by reusing off screen views and rebinds them to the data which is scrolling on the screen, now lets see the difference between list view and recyclerview. Difference between RecyclerView and Listview :- 1. RecyclerView forces to use RecyclerView.ViewHolder (Inbuilt view Holder) to hold the elements, to reuse the cells while scrolling, which was optional in Listview which we used to create in adapters getView() method. 2. Animation while adding list items or removing list items are already added in the recyclerview. 3. List views were only of vertical...

Linear Layout with border

Save this xml with name border.xml and add as a background for the linear layout....  <shape xmlns:android=" http://schemas.android.com/apk/res/android ">     <stroke android:width="4dp" android:color="#FF00FF00" />     <solid android:color="#ffffff" />     <padding android:left="7dp" android:top="7dp"             android:right="7dp" android:bottom="7dp" />     <corners android:radius="4dp" /> </shape>