有什麼方法可以檢測到屏幕上正在運行的應用程序?這意味着用戶正在使用的應用程序,並且對用戶可見。提前致謝!檢測屏幕上的應用程序
0
A
回答
0
以前的答案是一個很好的通用解決方案,但確實需要額外的許可,並不一定準確處理您的要求爲知道如果事情是可見的。如果您希望從自己的應用程序中執行此操作,則可以使用Android提供的活動生命週期跟蹤活動的可見性。
請注意,當活動即將變得不再可見時,Activity.onPause發生。 (來自:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle)
使用onStop檢測不可見性很誘人,但是在下一個活動已經可見之後,通常會觸發它。
相反,onResume可用於跟蹤活動是否可見。
您可以通過Activity的子類以及android.app.application的實現來使用這些行爲,以跟蹤您的任何活動是否可見。
例如:
public class Application extends android.app.Application {
private static final String TAG = "example";
private Class<? extends BaseActivity> _visibleActivity = null;
public boolean isAnyActivityVisible() {
return (_visibleActivity != null);
}
public synchronized void setVisibleActivity(Class<? extends BaseActivity> activity) {
_visibleActivity = activity;
Log.w(TAG,
String.format("setting visible activity to: %s",
isAnyActivityVisible() ? _visibleActivity.toString() : "none")
);
}
}
要使用此調整應用程序標籤在你的清單,以引用您的應用程序類,如:用來做跟蹤
的應用類
<application
android:name="com.example.activityvisibletracker.Application" />
...
</application>
您的所有活動都會從中獲得的BaseActivity:
public abstract class BaseActivity extends Activity {
@Override
public void onResume(){
super.onResume();
Application app = (com.example.activityvisibletracker.Application) this.getApplication();
app.setVisibleActivity(this.getClass());
}
@Override
public void onPause(){
super.onPause();
Application app = (Application) this.getApplication();
app.setVisibleActivity(null);
}
}
最後,擴展一個例子活動BaseActivity:
public class MainActivity extends BaseActivity {
// whatever implementation you like
}
每當你想知道,如果事情是可見的(可能是從你的應用中的一些服務或線程),你只需要一個上下文來獲取在應用程序,然後可以調用isAnyActivityVisible(),如:
// cast getApplication() result to your Application type
((com.example.activityvisibletracker.Application)context.getApplicationContext()).isAnyActivityVisible();
0
是的。檢查此代碼:
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(4096);
return runningTasks.get(0).topActivity.getPackageName();
返回包名稱。這需要
<uses-permission android:name="android.permission.GET_TASKS" />
0
在鎖屏上稱爲ICS,你的整個生命週期,即使你的應用程序只留坐在那裏,這是行不通的。
相關問題
- 1. 主屏幕上的iPad的自動Web應用程序檢測
- 2. 在iphone的主屏幕上檢測應用程序
- 3. Windows 8應用程序中的屏幕分辨率檢測
- 4. 如何檢測屏幕上
- 5. 在後臺應用程序中檢測鎖定屏幕
- 6. 檢測當應用程序保持屏幕
- 7. 檢測應用程序是否從鎖定屏幕打開
- 8. 檢測屏幕
- 9. 雙屏幕應用程序
- 10. Appium檢查員 - 應用程序沒有反映在屏幕上
- 11. 響應Windows屏幕上的屏幕鍵盤的外觀c#/ XAML應用程序
- 12. 屏幕上的圖像的Java檢測
- 13. 檢測Mac上的全屏應用程序
- 14. 如何檢測屏幕上的變化?
- 15. 檢測屏幕上的座標
- 16. 檢測屏幕上的一個片段
- 17. 檢測iPhone屏幕上的亮/暗點
- 18. 檢測屏幕/應用程序窗口的哪一部分正在使用OpenGL?
- 19. 我的Android應用程序不加載應用程序屏幕,只是跳到主應用程序屏幕?
- 20. 讓我的應用程序的屏幕長於設備屏幕
- 21. 如何在其他應用程序和主屏幕上顯示「破解屏幕」應用程序的圖像
- 22. 當子屏幕出現在屏幕上時檢測
- 23. 應用程序不適應屏幕
- 24. Ionic 1:iOS上的黑色屏幕上的應用程序
- 25. 如何在屏幕關閉時檢測iOS應用程序中的iBeacon?
- 26. Android檢測來自任何應用程序的屏幕邊緣手勢
- 27. 在iPhone應用程序中如何檢測設備的屏幕分辨率
- 28. 應用程序顯示屏幕旋轉後的主屏幕
- 29. 檢測對象是否在屏幕上
- 30. 在Windows 10通用應用程序上捕獲應用程序的屏幕
即使它在背景上也會重現!纔不是 ? – user1411084
它返回當前在屏幕上可見的活動的包名稱。 – FWeigl