Как я могу улучшить использование Android SharedPreference? - PullRequest
0 голосов
/ 26 августа 2018

Я хочу запустить другое приложение, имя пакета которого получено из EditText в AlertDialog. Моя проблема заключается в том, что я хочу отображать диалог только в том случае, если PackageName не было указано в SharedPreference или когда приложение недоступно.

Вот мой код:

public static final String mypref="mypref";
public static final String packagename="text";
private SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gpref();
    Button b=(Button)findViewById(R.id.btn);
    b.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View p1)
                    {
                        // TODO: Implement this method
                        String s=pref.getString(packagename);
                        if(s!=""){
                            Intent i=getPackageManager().getLaunchIntentForPackage(s);
                            if(i!=null){
                                startActivity(i);
                            } else{ sd();}
                        } else{
                            sd();
                        }
                    }
            });
}
public void sd(){
    final EditText et=new EditText(this);
    AlertDialog ad=new AlertDialog.Builder(MainActivity.this).create();
    ad.setView(et); ad.setButton(AlertDialog.BUTTON_POSITIVE,
            "Set", new DialogInterface.OnClickListener(){

                    @Override
                    public void onClick(DialogInterface p1, int p2)
                        {
                            // TODO: Implement this method
                            String s=et.getText().toString();
                            spref(s);
                        }
                });
}
public void gpref(){
    pref=getSharedPreferences(mypref,MODE_PRIVATE);
}
public void spref(String s){
    gpref();
    SharedPreferences.Editor spedit=pref.edit();
    spedit.putString(packagename,s); spedit.apply();
}

но я не нашел способа гарантировать имя пакета в SharedPreference, так как имя пакета не было установлено. Кто-нибудь даст мне несколько идей?

1 Ответ

0 голосов
/ 26 августа 2018

Пожалуйста, прочитайте официальный справочник о getString

Если конкретное предпочтение не установлено, метод getString будет возвращать значение по умолчанию. Вы можете проверить это значение по умолчанию. Например:

String s=pref.getString(packagename,"Default");
if(!s.equals("Default")){
//Do something
}
...