1

外部のMySQLデータベースに接続するAndroidアプリケーションを作成し、いくつかのデータを報告する方法を示す簡単なチュートリアルの場所を教えてもらえますか?

私がインターネットで見つけたチュートリアルは正確ではありません-それらは機能しないか、コードが完全ではありません。

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;

public class main extends Activity {
    /** Called when the activity is first created. */
    Button login;
    String name = "", pass = "";
    EditText username, password;
    TextView tv;
    byte[] data;
    HttpPost httppost;
    StringBuffer buffer;
    HttpResponse response;
    HttpClient httpclient;
    InputStream inputStream;
    SharedPreferences app_preferences;
    List<NameValuePair> nameValuePairs;
    CheckBox check;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
        username = (EditText) findViewById(R.id.username);
        password = (EditText) findViewById(R.id.password);
        login = (Button) findViewById(R.id.login);
        check = (CheckBox) findViewById(R.id.check);

        String Str_user = app_preferences.getString("username", "0");
        String Str_pass = app_preferences.getString("password", "0");
        String Str_check = app_preferences.getString("checked", "no");
        if (Str_check.equals("yes")) {
            username.setText(Str_user);
            password.setText(Str_pass);
            check.setChecked(true);
        }

        login.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                name = username.getText().toString();
                pass = password.getText().toString();
                String Str_check2 = app_preferences.getString("checked", "no");
                if (Str_check2.equals("yes")) {
                    SharedPreferences.Editor editor = app_preferences.edit();
                    editor.putString("username", name);
                    editor.putString("password", pass);
                    editor.commit();
                }
                if (name.equals("") || pass.equals("")) {
                    Toast.makeText(main.this, "Blank Field..Please Enter",
                            Toast.LENGTH_LONG).show();
                } else {
                    try {
                        httpclient = new DefaultHttpClient();
                        httppost = new HttpPost(
                                "http://www.****.com/android/check.php");

                        // Add your data
                        nameValuePairs = new ArrayList<NameValuePair>(2);
                        nameValuePairs.add(new BasicNameValuePair("UserEmail",
                                name.trim()));
                        nameValuePairs.add(new BasicNameValuePair("Password",
                                pass.trim()));
                        httppost.setEntity(new UrlEncodedFormEntity(
                                nameValuePairs));

                        // Execute HTTP Post Request
                        response = httpclient.execute(httppost);
                        inputStream = response.getEntity().getContent();

                        data = new byte[256];

                        buffer = new StringBuffer();
                        int len = 0;
                        while (-1 != (len = inputStream.read(data))) {
                            buffer.append(new String(data, 0, len));
                        }

                        inputStream.close();
                    } catch (Exception e) {
                        Toast.makeText(main.this, "error" + e.toString(),
                                Toast.LENGTH_LONG).show();
                    }

                    if (buffer.charAt(0) == 'Y') {
                        Toast.makeText(main.this, "login successfull",
                                Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(main.this,
                                "Invalid Username or password",
                                Toast.LENGTH_LONG).show();
                    }
                }
            }
        });
        check.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on clicks, depending on whether it's now
                // checked
                SharedPreferences.Editor editor = app_preferences.edit();
                if (((CheckBox) v).isChecked()) {

                    editor.putString("checked", "yes");
                    editor.commit();
                } else {
                    editor.putString("checked", "no");
                    editor.commit();
                }
            }
        });
    }

    public void Move_to_next() {
        // startActivity(new Intent(this, zzz.class));
    }
}
4

1 に答える 1

1

完全に説明された例を簡単に見つけることができませんでした。しかし、ここから始めます。

  1. アプリデータを管理し、それにアクセスしてローカルで使用するために保存するコンテンツプロバイダーをご覧ください。以下のリンクは、コンテンツプロバイダーがどのように機能するかについての広範な説明を提供します。使用する必要はありませんが。

http://www.satyakomatineni.com/akc/display?url=DisplayNoteIMPURL&reportId=2882&ownerUserId=satya

Androidコンテンツプロバイダーの例もこれを示しています。

  1. 自宅のサーバーで、アプリが情報を要求するためのRESTフルサービスレイヤーを提供することを検討してください。おそらくデータベース自体に直接アクセスしようとするのではなく。ここで何をすべきか(具体的にはどのように行うかではない)についてある程度議論しましたhttps://groups.google.com/forum/?fromgroups#!topic/android-developers/rzV9tYpQZ5Y%5B1-25%5D

恐れ入りますが、コード化された例はありません。

于 2012-08-19T12:50:32.433 に答える