0

でURLを開こうとしていますが、開くことWebViewができません。これは、セッションが維持されていないためだと思います。アクティビティでユーザー名、パスワード、ユーザーIDをサーバーに送信しています。これがコードです..

public class ServiceActivity extends Activity {
private Button button_back;

private Button button_submit_user_pass;
private EditText edit_id_code;
private String contents;
private String format;
private String username;
private String password;
private String id;
public static HttpClient client;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.qr_code_view);

    edit_id_code = (EditText) findViewById(R.id.editText_id);

    button_back = (Button) findViewById(R.id.button_back);
    button_submit_user_pass = (Button) findViewById(R.id.button_submit_user_pass);

    Intent user_pass = getIntent();

    username = user_pass.getStringExtra("user");
    password = user_pass.getStringExtra("pass");


    button_submit_user_pass
            .setOnClickListener(user_pass_qr_submit_listener);
    button_back.setOnClickListener(back_listener);

}

private View.OnClickListener user_pass_qr_submit_listener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        try {
            id = edit_id_code.getText().toString();

            client = new DefaultHttpClient();
            HttpPost post1 = new HttpPost(
                    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
            List<NameValuePair> nvp = new ArrayList<NameValuePair>();
            nvp.add(new BasicNameValuePair("uname", username));
            nvp.add(new BasicNameValuePair("password", password));
            nvp.add(new BasicNameValuePair("id", id));
            post1.setEntity(new UrlEncodedFormEntity(nvp));
            HttpResponse resp = client.execute(post1);
            String responseText = inputStreamTOString(
                    resp.getEntity().getContent()).toString();
            Log.i("response", responseText);
            int num = Integer.parseInt(responseText);

            if (num == 0) {
                Toast.makeText(getApplicationContext(),
                        "Response" + responseText, 0).show();
            } else if (num == 1) {
                Intent survey = new Intent(ServiceActivity.this,
                        WebViewActivity.class);
                startActivity(survey);
            }
        } catch (Exception e) {
            Log.e("error", "ERROR" + e);
        }

    }

};
private View.OnClickListener back_listener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    }
};

private StringBuilder inputStreamTOString(InputStream is) {
    String line = "";
    StringBuilder total = new StringBuilder();

    // read response until the end
    try {
        BufferedReader rd = new BufferedReader(new InputStreamReader(is,
                "iso-8859-1"), 8);
        while ((line = rd.readLine()) != null) {
            total.append(line);

        }
    } catch (Exception e) {
        // TODO: handle exception
    }
    return total;

}
}

この後、サーバー側からの応答が「1」の場合、新しいアクティビティを開いています。このアクティビティでは、ユーザーのコンテンツをWebViewここにコードで表示する必要があります。

public class WebViewActivity extends Activity{
private WebView web;
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web_view);

    web = (WebView) findViewById(R.id.webView);


    web.getSettings().setJavaScriptEnabled(true);


    web.loadUrl("xxxxxxxxxxxxxxxxxxxxxxxxxxxx");
}

}

しかし、ユーザーに対応するURLを読み込めません。これは、webviewactivityでphpエラーが発生します。これは、ログインしたユーザーのセッションを維持できないためです。これに対する解決策を提案してください。

4

2 に答える 2

0

アプリケーションのセッションを維持するためにSharedPreferencesを使用してみてください。

価値を保存します。

SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.putString("key", value);
editor.commit();

他の活動で検索するには

SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
String variable = prefs.getString("key","default value");
于 2012-09-14T05:18:37.867 に答える
0

あなたがする必要があるのは、あなたが作っているポストリクエストから返されたときにあなたのセッションを追跡するためにPHPによって使用されるクッキーを保存し、それを次のリクエストに使用することです。ポストリクエストの実行方法に応じて、いくつかの方法があります。

この回答は、Cookieの処理方法を説明しています:https ://stackoverflow.com/a/687453/1525300

于 2012-09-16T08:59:34.230 に答える