我有两个应用,一个应用名为“A”,另一个应用名为“B”,场景类似于应用 B 集成在应用 A 中,应用 B 有一个名为 CLoginSessionManagement
其中包含存储在该类中的用户数据的代码。我希望在应用程序“A”中从 CLoginSessionManagement
访问用户数据并确定用户是否登录的条件。我该怎么做?
CLoginSessionManagement 代码:
public class CLoginSessionManagement {
// User name (make variable public to access from outside)
public static final String s_szKEY_MOBILE = "agentcode";
// Email address (make variable public to access from outside)
public static final String s_szKEY_PASSWORD = "pin";
// Sharedpref file name
private static final String s_szPREF_NAME = "LoginData";
// All Shared Preferences Keys
private static final String s_szIS_LOGIN = "IsLoggedIn";
private final SharedPreferences m_LOGIN_PREF;
private final Editor m_EDITOR;
private final Context m_CONTEXT;
// Constructor
@SuppressLint("CommitPrefEdits")
public CLoginSessionManagement(Context m_CONTEXT) {
this.m_CONTEXT = m_CONTEXT;
m_LOGIN_PREF = m_CONTEXT.getSharedPreferences(s_szPREF_NAME, Context.MODE_PRIVATE);
m_EDITOR = m_LOGIN_PREF.edit();
}
// Registeration Session Management....
public void setLoginData(String mobile, String pin) {
m_EDITOR.putBoolean(s_szIS_LOGIN, true);
m_EDITOR.putString(s_szKEY_MOBILE, mobile);
m_EDITOR.putString(s_szKEY_PASSWORD, pin);
m_EDITOR.commit();
}
/**
* checkLogin() session wil check user Login status
* If false it will redirect user to Login page
* Else won't do anything
*/
public boolean checkLogin() {
if (!isLogin()) {
Intent i = new Intent(m_CONTEXT, CMainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
m_CONTEXT.startActivity(i);
return true;
}
return false;
}
/**
* Get stored Login session data
*/
public HashMap<String, String> getLoginDetails() {
HashMap<String, String> user = new HashMap<>();
// user name
user.put(s_szKEY_MOBILE, m_LOGIN_PREF.getString(s_szKEY_MOBILE, null));
// user email id
user.put(s_szKEY_PASSWORD, m_LOGIN_PREF.getString(s_szKEY_PASSWORD, null));
// return user
return user;
}
public boolean isLogin() {
return m_LOGIN_PREF.getBoolean(s_szIS_LOGIN, false);
}
/**
* Clear session details
*/
public void logoutUser() {
// Clearing all data from Shared Preferences
m_EDITOR.clear();
m_EDITOR.commit();
@SuppressWarnings("UnusedAssignment") final AppCompatActivity activity = (AppCompatActivity) m_CONTEXT;
Intent i = new Intent(m_CONTEXT, CLoginScreen.class);
// Closing all the Activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Staring Login Activity
m_CONTEXT.startActivity(i);
((AppCompatActivity) m_CONTEXT).finish();
}
}
m_oLoginSession = new CLoginSessionManagement(CLoginScreen.this);// object creatiion of Login session.
最佳答案
我刚刚查看了 android 开发文档,它指出 SharedPreferences 对您的应用程序是私有(private)的。您可以尝试内容提供者:
Android provides a way for you to expose even your private data to other applications — with a content provider.
引用链接:
关于android - 如何访问android中其他应用程序的共享偏好数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215651/