Commit 6105b329 authored by feihuaduo's avatar feihuaduo

新增悬浮窗权限和通知权限判断

parent b95032b4
package cn.garymb.ygomobile.ui.cards;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
......@@ -112,7 +114,6 @@ class CardSearchActivityImpl extends BaseActivity implements CardLoader.CallBack
}
}
private void intentSearch(){
// intentSearchMessage=getIntent().getStringExtra(CardSearchAcitivity.SEARCH_MESSAGE);
mCardSelector.search(ServiceDuelAssistant.cardSearchMessage);
......
package cn.garymb.ygomobile.ui.home;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
......@@ -7,12 +9,15 @@ import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.NavigationView;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
import android.view.Gravity;
import android.view.Menu;
......@@ -44,6 +49,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import cn.garymb.ygodata.YGOGameOptions;
import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.YGOStarter;
......@@ -119,6 +125,7 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
} else {
startService(new Intent(this, ServiceDuelAssistant.class));
}
//萌卡
StartMycard();
}
......
package cn.garymb.ygomobile.ui.home;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationManagerCompat;
import java.io.IOException;
......@@ -25,6 +30,7 @@ import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.ComponentUtils;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.NetUtils;
import cn.garymb.ygomobile.utils.PermissionUtil;
import static cn.garymb.ygomobile.Constants.ACTION_RELOAD;
import static cn.garymb.ygomobile.Constants.NETWORK_IMAGE;
......@@ -53,12 +59,13 @@ public class MainActivity extends HomeActivity{
ActivityCompat.requestPermissions(this, PERMISSIONS, 0);
}
@SuppressLint("StringFormatMatches")
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
for(int i=0;i<permissions.length;i++){
if(grantResults[i] == PackageManager.PERMISSION_DENIED){
showToast(R.string.tip_no_permission);
showToast(getString(R.string.tip_no_permission,permissions[i]));
break;
}
}
......@@ -75,7 +82,7 @@ public class MainActivity extends HomeActivity{
}
if (isNew) {
if (!getGameUriManager().doIntent(getIntent())) {
new DialogPlus(this)
DialogPlus dialog= new DialogPlus(this)
.setTitleText(getString(R.string.settings_about_change_log))
.loadUrl("file:///android_asset/changelog.html", Color.TRANSPARENT)
.hideButton()
......@@ -87,12 +94,21 @@ public class MainActivity extends HomeActivity{
mImageUpdater.start();
}
}
})
.show();
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
PermissionUtil.isServicePermission(MainActivity.this,true);
}
});
dialog.show();
}
} else {
PermissionUtil.isServicePermission(MainActivity.this,true);
getGameUriManager().doIntent(getIntent());
}
});
}
......
......@@ -2,16 +2,21 @@ package cn.garymb.ygomobile.ui.plus;
import android.annotation.SuppressLint;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.provider.Settings;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
......@@ -35,9 +40,11 @@ import cn.garymb.ygomobile.bean.ServerList;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.adapters.ServerListAdapter;
import cn.garymb.ygomobile.ui.cards.CardSearchAcitivity;
import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.home.ServerListManager;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.PermissionUtil;
import cn.garymb.ygomobile.utils.XmlUtils;
import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
......@@ -52,7 +59,7 @@ public class ServiceDuelAssistant extends Service {
private final static String CMD_STOP_SERVICE = "CMD : STOP SERVICE";
public static String cardSearchMessage="";
public static String cardSearchMessage = "";
private LinearLayout mFloatLayout;
private TextView ds_text;
......@@ -60,6 +67,7 @@ public class ServiceDuelAssistant extends Service {
//卡查关键字
private String[] cardSearchKey = new String[]{"?", "?"};
//是否可以移除悬浮窗上面的视图
private boolean isdis = false;
String[] passwordPrefix = {
......@@ -71,7 +79,7 @@ public class ServiceDuelAssistant extends Service {
"M#", "m#",
"T#", "t#",
"PR#", "pr#",
"NS#","ns#",
"NS#", "ns#",
"S#", "s#",
"AI#", "ai#",
"LF2#", "lf2#",
......@@ -157,6 +165,8 @@ public class ServiceDuelAssistant extends Service {
// TODO: Implement this method
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (PermissionUtil.isNotificationListenerEnabled(this)) {
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification_view_duel_assistant);
Intent intent = new Intent(this, this.getClass());
intent.setAction(DUEL_ASSISTANT_SERVICE_ACTION);
......@@ -171,11 +181,12 @@ public class ServiceDuelAssistant extends Service {
remoteViews.setOnClickPendingIntent(R.id.buttonStopService, pendingIntent);
Notification.Builder builder = new Notification.Builder(this);
Notification.Builder builder = new Notification.Builder(this, "决斗助手状态");
builder.setSmallIcon(R.drawable.ic_icon);
builder.setCustomContentView(remoteViews);
startForeground(1, builder.build());
}
}
//lc = new ArrayList<Card>();
//cladp = new CardListRecyclerViewAdapter(this, lc);
......@@ -210,6 +221,9 @@ public class ServiceDuelAssistant extends Service {
}
if (start != -1) {
//如果有悬浮窗权限再显示
if (PermissionUtil.isServicePermission(ServiceDuelAssistant.this,false))
joinRoom(clipMessage, start);
} else {
for (String s : cardSearchKey) {
......
package cn.garymb.ygomobile.utils;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.support.v4.app.NotificationManagerCompat;
import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
public class PermissionUtil {
//判断应用是否开启了通知权限
public static boolean isNotificationListenerEnabled(Context context) {
return NotificationManagerCompat.from(context).areNotificationsEnabled();
}
public static DialogPlus isNotificationPermission(Context context){
if(!isNotificationListenerEnabled(context)){
DialogPlus dialog = new DialogPlus(context);
dialog.setTitle("权限缺失提示");
dialog.setMessage("喵没给通知权限呢~\n开启通知权限可以快速关闭决斗助手功能");
dialog.setLeftButtonText("去开启");
dialog.setRightButtonText("取消");
dialog.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 根据isOpened结果,判断是否需要提醒用户跳转AppInfo页面,去打开App通知权限
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", App.get().getPackageName(), null);
intent.setData(uri);
context.startActivity(intent);
dialog.dismiss();
}
});
dialog.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialog.dismiss();
}
});
dialog.show();
return dialog;
}
return null;
}
//判断是否有悬浮窗权限
public static boolean isServicePermission(Context context, boolean isIntentPermission) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(context)) {
if (isIntentPermission) {
DialogPlus dialog = new DialogPlus(context);
dialog.setTitle("权限缺失提示");
dialog.setMessage("喵没给悬浮窗权限呢~\n开启悬浮窗权限可进行快速加入决斗房间");
dialog.setLeftButtonText("去开启");
dialog.setRightButtonText("取消");
dialog.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
context.startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION));
dialog.dismiss();
}
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
isNotificationPermission(context);
}
});
dialog.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialog.dismiss();
}
});
dialog.show();
}
return false;
}
}
return true;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment