⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accountactivity.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 JAVA
字号:
/* * Copyright (C) 2008 Esmertec AG. * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.android.im.app;import com.android.im.R;import com.android.im.plugin.BrandingResourceIDs;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.content.DialogInterface;import android.content.Intent;import android.database.Cursor;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.provider.Im;import android.text.Editable;import android.text.SpannableStringBuilder;import android.text.Spanned;import android.text.SpannableString;import android.text.TextUtils;import android.text.TextWatcher;import android.text.method.LinkMovementMethod;import android.text.style.URLSpan;import android.text.util.Linkify;import android.util.Log;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import android.widget.CompoundButton.OnCheckedChangeListener;public class AccountActivity extends Activity {    private static final String ACCOUNT_URI_KEY = "accountUri";    static final int REQUEST_SIGN_IN = RESULT_FIRST_USER + 1;    private static final String[] ACCOUNT_PROJECTION = {        Im.Account._ID,        Im.Account.PROVIDER,        Im.Account.USERNAME,        Im.Account.PASSWORD,        Im.Account.KEEP_SIGNED_IN,    };    private static final int ACCOUNT_PROVIDER_COLUMN = 1;    private static final int ACCOUNT_USERNAME_COLUMN = 2;    private static final int ACCOUNT_PASSWORD_COLUMN = 3;    private static final int ACCOUNT_KEEP_SIGNED_IN_COLUMN = 4;    Uri mAccountUri;    EditText mEditName;    EditText mEditPass;    CheckBox mRememberPass;    CheckBox mKeepSignIn;    Button   mBtnSignIn;    String mToAddress;    @Override    protected void onCreate(Bundle icicle) {        super.onCreate(icicle);        getWindow().requestFeature(Window.FEATURE_LEFT_ICON);        setContentView(R.layout.account_activity);        mEditName = (EditText)findViewById(R.id.edtName);        mEditPass = (EditText)findViewById(R.id.edtPass);        mRememberPass = (CheckBox)findViewById(R.id.rememberPassword);        mKeepSignIn = (CheckBox)findViewById(R.id.keepSignIn);        mBtnSignIn = (Button)findViewById(R.id.btnSignIn);        mRememberPass.setOnCheckedChangeListener(new OnCheckedChangeListener(){            public void onCheckedChanged(CompoundButton buttonView,                    boolean isChecked) {                updateWidgetState();            }        });        ImApp app = ImApp.getApplication(this);        Intent i = getIntent();        String action = i.getAction();        mToAddress = i.getStringExtra(ImApp.EXTRA_INTENT_SEND_TO_USER);        final String origUserName;        final long providerId;        final ProviderDef provider;        if(Intent.ACTION_INSERT.equals(action)) {            origUserName = "";            providerId = ContentUris.parseId(i.getData());            provider = app.getProvider(providerId);            setTitle(getResources().getString(R.string.add_account, provider.mFullName));        } else if(Intent.ACTION_EDIT.equals(action)) {            ContentResolver cr = getContentResolver();            Uri uri = i.getData();            if ((uri == null) || !Im.Account.CONTENT_ITEM_TYPE.equals(cr.getType(uri))) {                Log.w(ImApp.LOG_TAG, "<AccountActivity>Bad data");                return;            }            Cursor cursor = cr.query(uri, ACCOUNT_PROJECTION, null, null, null);            if (cursor == null) {                finish();                return;            }            if (!cursor.moveToFirst()) {                cursor.close();                finish();                return;            }            setTitle(R.string.sign_in);            providerId = cursor.getLong(ACCOUNT_PROVIDER_COLUMN);            provider = app.getProvider(providerId);            origUserName = cursor.getString(ACCOUNT_USERNAME_COLUMN);            mEditName.setText(origUserName);            mEditPass.setText(cursor.getString(ACCOUNT_PASSWORD_COLUMN));            mRememberPass.setChecked(!cursor.isNull(ACCOUNT_PASSWORD_COLUMN));            boolean keepSignIn = cursor.getInt(ACCOUNT_KEEP_SIGNED_IN_COLUMN) == 1;            mKeepSignIn.setChecked(keepSignIn);            cursor.close();        } else {            Log.w(ImApp.LOG_TAG, "<AccountActivity> unknown intent action " + action);            finish();            return;        }        final BrandingResources brandingRes = app.getBrandingResource(providerId);        mKeepSignIn.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                CheckBox keepSignIn = (CheckBox) v;                if ( keepSignIn.isChecked() ) {                    String msg = brandingRes.getString(BrandingResourceIDs.STRING_TOAST_CHECK_AUTO_SIGN_IN);                    Toast.makeText(AccountActivity.this, msg, Toast.LENGTH_LONG).show();                }            }        });        mRememberPass.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                CheckBox keepSignIn = (CheckBox) v;                if ( keepSignIn.isChecked() ) {                    String msg = brandingRes.getString(BrandingResourceIDs.STRING_TOAST_CHECK_SAVE_PASSWORD);                    Toast.makeText(AccountActivity.this, msg, Toast.LENGTH_LONG).show();                }            }        });        Drawable logo = brandingRes.getDrawable(BrandingResourceIDs.DRAWABLE_LOGO);        getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, logo);        TextView labelUsername = (TextView)findViewById(R.id.label_username);        labelUsername.setText(brandingRes.getString(BrandingResourceIDs.STRING_LABEL_USERNAME));        mEditName.addTextChangedListener(mTextWatcher);        mEditPass.addTextChangedListener(mTextWatcher);        mBtnSignIn.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                String username = mEditName.getText().toString();                final String pass = mEditPass.getText().toString();                final boolean rememberPass = mRememberPass.isChecked();                ContentResolver cr = getContentResolver();                long accountId = ImApp.insertOrUpdateAccount(cr, providerId, username,                        rememberPass ? pass : null);                mAccountUri = ContentUris.withAppendedId(Im.Account.CONTENT_URI, accountId);                if (!origUserName.equals(username) && shouldShowTermOfUse(brandingRes)) {                    comfirmTermsOfUse(brandingRes, new DialogInterface.OnClickListener() {                        public void onClick(DialogInterface dialog, int which) {                            signIn(rememberPass, pass);                        }                    });                } else {                    signIn(rememberPass, pass);                }            }            void signIn(boolean rememberPass, String pass) {                Intent intent = new Intent(AccountActivity.this, SigningInActivity.class);                intent.setData(mAccountUri);                if (!rememberPass) {                    intent.putExtra(ImApp.EXTRA_INTENT_PASSWORD, pass);                }                if (mToAddress != null) {                    intent.putExtra(ImApp.EXTRA_INTENT_SEND_TO_USER, mToAddress);                }                startActivityForResult(intent, REQUEST_SIGN_IN);            }        });        // Make link for signing up.        String text = brandingRes.getString(BrandingResourceIDs.STRING_LABEL_SIGN_UP);        SpannableStringBuilder builder = new SpannableStringBuilder(text);        builder.setSpan(new URLSpan(provider.mSignUpUrl), 0, builder.length(),                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        TextView signUp = (TextView)findViewById(R.id.signUp);        signUp.setText(builder);        signUp.setMovementMethod(LinkMovementMethod.getInstance());        updateWidgetState();    }    void comfirmTermsOfUse(BrandingResources res, DialogInterface.OnClickListener accept) {        SpannableString message = new SpannableString(                res.getString(BrandingResourceIDs.STRING_TOU_MESSAGE));        Linkify.addLinks(message, Linkify.ALL);        new AlertDialog.Builder(this)            .setIcon(android.R.drawable.ic_dialog_alert)            .setTitle(res.getString(BrandingResourceIDs.STRING_TOU_TITLE))            .setMessage(message)            .setPositiveButton(res.getString(BrandingResourceIDs.STRING_TOU_DECLINE), null)            .setNegativeButton(res.getString(BrandingResourceIDs.STRING_TOU_ACCEPT), accept)            .show();    }    boolean shouldShowTermOfUse(BrandingResources res) {        return !TextUtils.isEmpty(res.getString(BrandingResourceIDs.STRING_TOU_MESSAGE));    }    @Override    protected void onRestoreInstanceState(Bundle savedInstanceState) {        super.onRestoreInstanceState(savedInstanceState);        mAccountUri = savedInstanceState.getParcelable(ACCOUNT_URI_KEY);    }    @Override    protected void onSaveInstanceState(Bundle outState) {        super.onSaveInstanceState(outState);        outState.putParcelable(ACCOUNT_URI_KEY, mAccountUri);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {        if (requestCode == REQUEST_SIGN_IN) {            if (resultCode == RESULT_OK) {                boolean keepSignIn = mKeepSignIn.isChecked();                updateKeepSignedIn(keepSignIn);                finish();            } else {                // sign in failed, disable keep sign in, clear the password.                mKeepSignIn.setChecked(false);                updateKeepSignedIn(false);                mEditPass.setText("");                ContentValues values = new ContentValues();                values.put(Im.Account.PASSWORD, (String) null);                getContentResolver().update(mAccountUri, values, null, null);            }        }    }    void updateKeepSignedIn(boolean keepSignIn) {        ContentValues values = new ContentValues();        values.put(Im.Account.KEEP_SIGNED_IN, keepSignIn ? 1 : 0);        getContentResolver().update(mAccountUri, values, null, null);    }    void updateWidgetState() {        boolean goodUsername = mEditName.getText().length() > 0;        boolean goodPassword = mEditPass.getText().length() > 0;        boolean hasNameAndPassword = goodUsername && goodPassword;        mEditPass.setEnabled(goodUsername);        mEditPass.setFocusable(goodUsername);        mEditPass.setFocusableInTouchMode(goodUsername);        // enable keep sign in only when remember password is checked.        boolean rememberPass = mRememberPass.isChecked();        if (rememberPass && !hasNameAndPassword) {            mRememberPass.setChecked(false);            rememberPass = false;        }        mRememberPass.setEnabled(hasNameAndPassword);        mRememberPass.setFocusable(hasNameAndPassword);        if (!rememberPass) {            mKeepSignIn.setChecked(false);        }        mKeepSignIn.setEnabled(rememberPass);        mKeepSignIn.setFocusable(rememberPass);        mBtnSignIn.setEnabled(hasNameAndPassword);        mBtnSignIn.setFocusable(hasNameAndPassword);    }    private final TextWatcher mTextWatcher = new TextWatcher() {        public void beforeTextChanged(CharSequence s, int start, int before, int after) {        }        public void onTextChanged(CharSequence s, int start, int before, int after) {            updateWidgetState();        }        public void afterTextChanged(Editable s) {        }    };}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -