Skip to content

方法4,queryUsageStats偶尔返回空集合,导致return false认为并不在前台(其实在) #17

Description

@Drinkwatermore

我这样改了下就好了。
原:
/*
if (usageStats == null || usageStats.size() == 0) {
if (HavaPermissionForTest(context) == false) {
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Toast.makeText(context, "权限不够\n请打开手机设置,点击安全-高级,在有权查看使用情况的应用中,为这个App打上勾", Toast.LENGTH_SHORT).show();
}
//发现造成这里的false 是因为 usageStats.size() == 0,即空集合(实际手机有任务存在)
// boolean r = (usageStats == null);
//android.util.Log.e("Current","usageStats:null:"+r);

        return false;
    }*/

改后:
//改一下上面的
if (usageStats == null || usageStats.size() == 0) {
if (HavaPermissionForTest(context) == false) {
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

            //1.我是子线程里使用Toast
            Looper.prepare();
            Toast.makeText(context, "权限不够\n请打开手机设置,点击安全-高级,在有权查看使用情况的应用中,为这个App打上勾", Toast.LENGTH_SHORT).show();
            Looper.loop();// 进入loop中的循环,查看消息队列

            //2.添加这里,
            return false;
        }
        //3.一定得返回,不然后面会下标越界,估计返回true,一直检查的话,马上就会有真实情况
        return true;
    }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions