2014-10-09 3 views
1

저는 appLocker에서 장치의 설치된 응용 프로그램에 암호를 설정해야합니다. 에 대해 제가 설치된 모든 응용 프로그램을 가져 오는 목록을 만들었습니다. 사용자는 checkBox를 사용하여 응용 프로그램을 선택하고 그에 대한 암호를 설정할 수 있습니다. 그 때문에 해당 응용 프로그램의 패키지 이름을 가져야합니다. 선택한 응용 프로그램의 패키지 이름을 가져 와서 공유 기본 설정을 사용하여 저장할 수 있습니다. 이제 다른 활동에서 패키지 이름을 가져야합니다. 내가 어떻게 얻을 수 있는지 말해줘.공유 환경 설정에서 패키지 이름을 얻는 방법은 무엇입니까?

이것은 패키지 이름을 얻는 코드입니다.

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(); 

이 내가 다른 활동에서 선택한 응용 프로그램을 잠글 해당 패키지 이름을 얻을 수있는 코드 섹션 .. 위의 질문에서

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(); 
      } 
     } 
    } 
} 
+0

사용 sharedPref .getString function – KOTIOS

+0

친절한 답변을 해줘서 고맙습니다.하지만 이것을 사용하는 방법과 사용 장소를 알려주세요. 내 말은,이 코드의 평화에 그것을 사용할 수 있습니까? – Devraj

+0

StringBuilder를 사용하는 대신 List를 사용하십시오. –

답변

1

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

줄 것이다 SharedPreferences에서 저장 한 문자열을 응용 프로그램에서 원하는 위치로 가져옵니다.

당신은 당신이() 메소드 마찬가지로 우리가에서 onCreate 내부의 환경에서 작업 목록을 검색 할 수 있습니다 최적화

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(); 
     } 

아래로 주어진 다른 솔루션을 통해 갈 수 좋아하는 경우 :

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(); 
      } 
     } 
관련 문제