Skip to content

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

@Drinkwatermore

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;
    }

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