JavascriptProva

venerdì 19 maggio 2017

Permessi di disegno di un overlay nelle API da 23 in su

Ecco il codice:
public class MainActivity extends AppCompatActivity {

    Intent i;
    RelativeLayout mainLayout;
    @TargetApi(Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mainLayout=(RelativeLayout)findViewById(R.id.mainLayout);

        if(Build.VERSION.SDK_INT>=23 && !Settings.canDrawOverlays(this)){
                Intent intent=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:"+getPackageName())
                );
                startActivityForResult(intent,0);

        }else {
        i = new Intent(this, Servizio.class);
        startService(i);
        }

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(Build.VERSION.SDK_INT>=23) {
            if (Settings.canDrawOverlays(this)) {
                i = new Intent(this, Servizio.class);
                startService(i);

            }
        }
    }
}


Service:
public class Servizio extends Service {


    Bitmap bitmap;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

   
    @Override
    public int onStartCommand(Intent intent, int flags, int startId){


        bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.scrofalo);
        RoundedImage image=new RoundedImage(this,bitmap,200);
        WindowManager windowManager=(WindowManager)getSystemService(WINDOW_SERVICE);

        WindowManager.LayoutParams params=new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT
        );

        windowManager.addView(image,params);
        return START_NOT_STICKY;
    }

}
Chiama la classe RoundedImage, che ho creato e messo in una libreria.

Nessun commento:

Posta un commento