获取服务类中的当前活动名称

时间:2017-06-03 09:01:58

标签: java android android-activity service

您好我试图获取服务类中的当前活动名称(活动标题)。

我试过了

with open('data.csv', mode='r+') as csvfile:
    text = csvfile.read()
    text = '1,2,3\n' + text
    csvfile.seek(0)
    csvfile.write(text)

但它没有用。还有其他想法吗?

3 个答案:

答案 0 :(得分:0)

知道ActivityManager管理活动,因此我们可以从ActivityManager获取信息。我们通过

获取当前前台运行的Activity
 ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
    if(Build.VERSION.SDK_INT > 20)
    {
     String mPackageName = am.getRunningAppProcesses().get(0).processName;
    }
    else
    {
      String mpackageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
    }

答案 1 :(得分:0)

服务与活动无关,因此没有直接的方法。

我建议:从BaseActivity.java扩展您的活动,在onResume()中,您可以将当前活动名称保存为应用程序类中的静态变量。然后,这将在您的应用程序中随处可用。

public class App extends Application {
    public static String currentActivityName;
}

public class MyActivity extends Activity {
    @Override
    protected void onResume() {
        App.currentActivityName = this.getClass().getSimpleName();
    }
}

答案 2 :(得分:0)

  

试试这个

//获取当前热门活动

ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
            List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
            ComponentName componentInfo = taskInfo.get(0).topActivity;
            String Actvity_Name = taskInfo.get(0).topActivity.getClassName();
            String PKG_Name = componentInfo.getPackageName();
  

//通过这种方式应用检查

if(Actvity_Name.equals("com.example.Your_Activity"))
            {               

            }
  

//在清单文件中添加权限

<uses-permission android:name="android.permission.GET_TASKS"/>
    <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>