Original code is here NotificationUtils.java
我想从activeroom.java获取roomid方法的值。我想我可以使用getClass()。getMethod()。 ?
所以,这段代码在NotficationUtils.java中,并尝试从ActivityRooms.java中获取字符串值“isRoomId”
public static boolean isAppIsInBackground(Context context,String chatRoomId) {
boolean isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
在if()旁边,我正在定义m方法,我想从“活动类”中获取值“isRoomId”方法。
try {
Method m = activeProcess.getClass().getMethod("isRoomId",null);
if (chatRoomId.equals(m.toString()))
{
isInBackground = false;
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
ActivityRoom.java有isRoomId方法。
public static String chatRoomId;
chatRoomId = intent.getStringExtra("chat_room_id");
public static String isRoomId()
{
return chatRoomId;
}
答案 0 :(得分:1)
isRoomId()
的 ActiveRoom
方法不是静态方法。因此,您需要实例化该类,然后调用该对象的方法。
如果isRoomId
返回的值与类ActiveRoom
的对象状态无关,那么您可以将其设置为如下所示的静态方法。然后,您可以从NotficationUtils.java
方法
public static String isRoomId()
{
String chatRoomId="6";
return chatRoomId;
}
Invokation
ActiveRoom.isRoomId()
如果您打算在isRoomId()中编写的逻辑依赖于对象状态,那么您需要在NotificationUtil类中获取相关的对象引用并在该对象上调用该方法。