package com.stardust.scriptdroid.external.floatingwindow;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.annotation.RequiresApi;
import android.util.Log;
import android.widget.Toast;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.util.IntentUtil;
/**
* Created by Stardust on 2017/3/10.
*/
public class FloatingWindowManger {
private static final String KEY_FLOATING_WINDOW_PERMISSION = "May we go back..I...miss..you..Eating..17.5.9";
private static final String TAG = "FloatingWindowManger";
public static void showHoverMenu() {
if (!HoverMenuService.isServiceRunning()) {
if (!hasFloatingWindowPermission(App.getApp())) {
Toast.makeText(App.getApp(), R.string.text_no_floating_window_permission, Toast.LENGTH_SHORT).show();
goToFloatingWindowPermissionSetting();
} else {
HoverMenuService.startService(App.getApp());
}
}
}
public static void goToFloatingWindowPermissionSetting() {
IntentUtil.goToAppDetailSettings(App.getApp());
}
@RequiresApi(api = Build.VERSION_CODES.M)
private static void goToOverlayPermissionSettings(Context context, String packageName) {
try {
App.getApp().startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + context))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} catch (Exception e) {
IntentUtil.goToAppDetailSettings(App.getApp());
}
}
public static void checkPermission() {
final OverlayPermissionChecker checker = new OverlayPermissionChecker(App.getApp());
checker.setCallback(new OverlayPermissionChecker.Callback() {
@Override
public void onCheckResult(boolean granted) {
checker.setCallback(null);
Log.d(TAG, "onCheckResult:" + granted);
setHasFloatingWindowPermission(App.getApp(), granted);
}
});
checker.check(1500);
}
public static boolean hasFloatingWindowPermission(Context context) {
return hasOverlayPermission();
}
private static void setHasFloatingWindowPermission(Context context, boolean has) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(KEY_FLOATING_WINDOW_PERMISSION, has).apply();
}
private static boolean hasOverlayPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return Settings.canDrawOverlays(App.getApp());
}
return true;
}
public static boolean isHoverMenuShowing() {
return HoverMenuService.isServiceRunning();
}
public static void hideHoverMenu() {
if (HoverMenuService.isServiceRunning())
App.getApp().stopService(new Intent(App.getApp(), HoverMenuService.class));
}
}