嗨在做了很多搜索之后,我找不到问题的答案,这似乎有些简单。
我在设备上安装了多个应用。有没有办法找到所有应用程序的最后发布日期?
答案 0 :(得分:2)
您可以在应用打开时将时间和日期放在SharedPref中。 然后,下次打开应用程序时,应用程序会读取SharedPref并显示它。
这样的事情:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar c = Calendar.getInstance();
SharedPreferences sp = this.getPreferences(Context.MODE_PRIVATE);
String lastLaunch = sp.getString("launch", "First launch!");
SharedPreferences.Editor editor = sp.edit();
editor.putString("launch", c.getTime().toString());
editor.commit();
}
String lastLaunch是它最后一次启动!如果它是第一次字符串是:"首次启动!"
我希望我能帮助你一点点。)
答案 1 :(得分:0)
根据您在上述评论中的要求,我提供了一种方法,可以使用SharedPreferences
在一堆应用之间分享启动时间。
首先,我们需要允许我们的应用共享本地存储,以便他们可以访问偏好数据。为此,我们在应用清单中使用sharedUserId
属性。这可以是您自己的唯一字符串,并且共享空间的每个应用必须具有以下内容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.com.myapp"
android:sharedUserId="string.user.id.here">
...
</manifest>
其次,我们使用Application
类来确定应用程序何时到达前台以及何时到达前台,以Context.CONTEXT_IGNORE_SECURITY
模式写下时间戳以在我们的应用之间共享:
public class MyApp extends Application implements ActivityLifecycleCallbacks {
private boolean appInBg;
private int TIMEOUT = 5000;
private Handler mHandler = new Handler();
@Override
public void onActivityResumed() {
if (appInBg) {
writeToPref();
} else {
mHandler.cancelCallbacksAndMessages(null);
}
}
@Override
public void onActivityPaused() {
mHanlder.postDelayed(new Runnable() {
@Override
public void run() {
appInBg = true;
}
}, TIMEOUT);
}
...
private void writeToPref() {
SharedPreferences prefs = myContext.getSharedPreferences("run_prefs", Context.CONTEXT_IGNORE_SECURITY);
prefs.edit().putInt("last_run", System.currentTimeMillis()).apply();
}
}
在这里,我们允许5秒的缓冲时间在屏幕之间切换。在大多数情况下,这应该足够了。
最后,我们可以按如下方式阅读书面SharedPreference
值:
Context context = createPackageContext("example.com.myapp", 0);
SharedPreferences pref = context.getSharedPreferences("run_prefs", Context.CONTEXT_IGNORE_SECURITY);
int lastLaunch = pref.getString("last_run", System.currentTimeMillis());
// Similarly, for other apps.
希望这能解决您的问题。