Android问题—读取其他应用的SharedPreferences

来源:互联网 发布:安吉汽车物流知乎 编辑:程序博客网 时间:2024/05/17 03:51

核心: 获得其他app的Context,而这个Context代表访问该app的全局信息的接口,而决定应用的唯一标识 是应用的包名,所以我们可以通过应用包名获得对应app的Context 另外有一点要注意的是:其他应用的SP文件是否能被读写的前提就是SP文件是否指定了可读或者 可写的权限,我们上面创建的是MODE_PRIVATE的就不可以了~所以说你像读别人的SP里的数据, 很难,另外,一些关键的信息,比如密码保存到SP里,一般都是会做加密的,所以只能自己写自己玩~ 等下会讲下常用的MD5加密方法!

实现流程图:
这里写图片描述

代码实现:
我们读取SP的操作放在MainActivity.java中完成,点击按钮后读取SP,并通过Toast显示出来:

import android.content.Context;import android.content.SharedPreferences;import android.content.pm.PackageManager;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Context othercontext;    private SharedPreferences sp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button btnshow = (Button) findViewById(R.id.btnshow);        btnshow.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //获得第一个应用的包名,从而获得对应的Context,需要对异常进行捕获                try {                    othercontext = createPackageContext("com.jay.sharedpreferencedemo", Context.CONTEXT_IGNORE_SECURITY);                } catch (PackageManager.NameNotFoundException e) {                    e.printStackTrace();                }                //根据Context取得对应的SharedPreferences                sp = othercontext.getSharedPreferences("mysp", Context.MODE_WORLD_READABLE);                String name = sp.getString("username", "");                String passwd = sp.getString("passwd", "");                Toast.makeText(getApplicationContext(), "Demo1的SharedPreference存的\n用户名为:" + name + "\n密码为:" + passwd, Toast.LENGTH_SHORT).show();            }        });    }}
0 0
原创粉丝点击