gpt4 book ai didi

android - 如何从共享首选项中获取包名称?

转载 作者:行者123 更新时间:2023-11-30 02:37:24 25 4
gpt4 key购买 nike

我正在开发 appLocker,我必须在其中设置已安装的设备应用程序的密码。为此,我创建了一个列表,其中包含所有已安装的应用程序。用户可以使用复选框选择应用程序并为其设置密码。为此,我必须获取该应用程序的包名称。我能够获取所选应用程序的包名称并使用共享首选项保存它们。现在我必须在另一个 Activity 中获取该包名称。请告诉我怎样才能得到它。

这是我获取包名称的代码。

 public void onClick(View v) {
if (R.id.select_done_btn == v.getId()) {
SharedPreferences prefs = getSharedPreferences(getPackageName(), MODE_PRIVATE);
int[] indexes = appListAdapter.getSelectedItemIndexes();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < indexes.length; ++i) {
AppInfo appInfo = installedApps.get(indexes[i]);
sb.append(appInfo.getPackageName()).append(";");
}
Editor editor = prefs.edit();
editor.putString("lock_apps", sb.toString());
editor.commit();

这是代码部分,我必须在其中获取该包名称才能将所选应用程序锁定在另一个 Activity 中..

public void run() {
while (true) {
Log.i("lock", "lockerThread run.");
String packname = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
if ("**PACKAGE NAME**".equals(packname)) {
startActivity(pwdIntent);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

最佳答案

在上面的问题中

SharedPreferences prefs = getSharedPreferences(getPackageName() , MODE_PRIVATE);
prefs.getstring("key");

将从 SharedPreferences 中保存的字符串提供给应用程序中您想要的任何位置。

如果你愿意,你可以通过下面给出的其他解决方案进行优化

 public void addTask(Task t) {
if (null == currentTasks) {
currentTasks = new ArrayList<task>();
}
currentTasks.add(t);

//save the task list to preference
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
Editor editor = prefs.edit();
try {
editor.putString(TASKS, ObjectSerializer.serialize(currentTasks));
} catch (IOException e) {
e.printStackTrace();
}
editor.commit();
}

同样,我们可以从 onCreate() 方法中的首选项中检索任务列表:

  public void onCreate() {
super.onCreate();
if (null == currentTasks) {
currentTasks = new ArrayList<task>();
}

// load tasks from preference
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);

try {
currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

关于android - 如何从共享首选项中获取包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com