如何使用片段获取正在运行的应用程序的列表?

时间:2019-03-08 12:27:14

标签: android android-fragments

我不知道如何在片段中执行此操作。这里的大多数问题和答案都围绕正常活动(扩展了AppCompatActivity)。

我所拥有的是带有底部导航的应用程序,该应用程序使用片段来切换屏幕。我尽力使一切正常,但没有任何效果,所以我决定在这里寻求帮助。我在使用不同的代码块时遇到了不同的错误。

我的目标是获取正在运行的非系统应用程序的列表,并在可能的情况下获取它们运行了多少分钟/小时。

import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class ListFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frag_list,null);
        TextView tv1 = (TextView)view.findViewById(R.id.list1);
        Intent mainIntent = new Intent(Intent.ACTION_MAIN,null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> pkgAppList = getActivity().getPackageManager().queryIntentActivities(mainIntent,0);
        for(int i=0; i<pkgAppList.size(); i++){
            System.out.println(pkgAppList.get(i).toString());
        }
        return view;
    }
}

这是我在这里尝试过的最后一个代码。我的理解方式是在代码块中使用了方法和类,但不适用于片段(扩展Fragment)。有什么可能的解决方法?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

ActivityManager am = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

for (int i = 0; i < runningAppProcessInfo.size(); i++) {
  if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for")) {
    // Do your stuff here.
  }
}

希望有帮助!