簡體   English   中英

讀取另一個Android應用程序的共享首選項

[英]Read shared preference of another android application

我需要訪問另一個應用程序的共享首選項文件。 設備已植根! )目前,我似乎面臨權限問題。 這是我運行的當前代碼:

Context con = createPackageContext("com.sam.sample", CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPref = con.getSharedPreferences("namefile", MODE_PRIVATE);
Map data = sharedPref.getString("name", "");
Log.d("Name", "name:" + name);

當我運行此代碼時,出現以下錯誤:

嘗試在未經許可的情況下讀取首選項文件/data/data/com.sam.sample/shared_prefs/namefile.xml

我也嘗試過運行su命令,但是我不希望通知用戶我想通過chmod 775對XML文件進行讀取訪問。

任何幫助表示贊賞。

為此,在“ com.sam.sample”中創建SharedPreference時,應使用Context.MODE_WORLD_READABLE模式創建它。 因此,如果您具有“ com.sam.sample”應用程序的代碼,則其外觀應類似於以下內容

SharedPreferences prefs = getSharedPreferences("namefile",
                Context.MODE_WORLD_READABLE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("name", strShareValue);
        editor.commit();

另請注意,不建議將模式更改為Context.MODE_WORLD_READABLE,因為這可能會導致安全漏洞。 從NOS開始,這將引發SecurityException。 更多信息:-

https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE

理想情況下,應使用ContentProvider。

例如,您的ContentProvider的查詢功能可以是

MatrixCursor cursor = new MatrixCursor(new String[] { "name" }, 1); cursor.addRow(new Object[] { readSharedPreference() }); return cursor;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM