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

📄 chooseaccountactivity.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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 android.app.ListActivity;import android.content.ContentUris;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Message;import android.os.RemoteException;import android.provider.Im;import android.util.Log;import android.util.AttributeSet;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.view.LayoutInflater;import android.view.ContextMenu.ContextMenuInfo;import android.widget.AdapterView;import android.widget.ListView;import android.widget.CursorAdapter;import com.android.im.IImConnection;import com.android.im.R;import com.android.im.engine.ImConnection;import com.android.im.plugin.BrandingResourceIDs;import com.android.im.service.ImServiceConstants;public class ChooseAccountActivity extends ListActivity implements        View.OnCreateContextMenuListener {    private static final int ID_SIGN_IN = Menu.FIRST + 1;    private static final int ID_SIGN_OUT = Menu.FIRST + 2;    private static final int ID_EDIT_ACCOUNT = Menu.FIRST + 3;    private static final int ID_REMOVE_ACCOUNT = Menu.FIRST + 4;    private static final int ID_SIGN_OUT_ALL = Menu.FIRST + 5;    private static final int ID_ADD_ACCOUNT = Menu.FIRST + 6;    private static final int ID_VIEW_CONTACT_LIST = Menu.FIRST + 7;    private static final int ID_SETTINGS = Menu.FIRST + 8;    ImApp mApp;    MyHandler mHandler;    private ProviderAdapter mAdapter;    private Cursor mProviderCursor;    private static final String[] PROVIDER_PROJECTION = {        Im.Provider._ID,        Im.Provider.NAME,        Im.Provider.FULLNAME,        Im.Provider.ACTIVE_ACCOUNT_ID,        Im.Provider.ACTIVE_ACCOUNT_USERNAME,        Im.Provider.ACTIVE_ACCOUNT_PW,    };    static final int PROVIDER_ID_COLUMN = 0;    static final int PROVIDER_NAME_COLUMN = 1;    static final int PROVIDER_FULLNAME_COLUMN = 2;    static final int ACTIVE_ACCOUNT_ID_COLUMN = 3;    static final int ACTIVE_ACCOUNT_USERNAME_COLUMN = 4;    static final int ACTIVE_ACCOUNT_PW_COLUMN = 5;    @Override    protected void onCreate(Bundle icicle) {        super.onCreate(icicle);        setTitle(R.string.choose_account_title);        mApp = ImApp.getApplication(this);        mHandler = new MyHandler();        mApp.registerForBroadcastEvent(ImApp.EVENT_SERVICE_CONNECTED, mHandler);        mApp.registerForConnEvents(mHandler);        mApp.startImServiceIfNeed();        // (for open source) for now exclude GTalk on the landing page until we can load        // it in an abstract way        String selection = "providers.name != ?";        String[] selectionArgs = new String[] { Im.ProviderNames.GTALK };        mProviderCursor = managedQuery(Im.Provider.CONTENT_URI_WITH_ACCOUNT,                PROVIDER_PROJECTION,                selection,                selectionArgs,                Im.Provider.DEFAULT_SORT_ORDER);        mAdapter = new ProviderAdapter(this, mProviderCursor);        mApp.callWhenServiceConnected(mHandler, new Runnable() {            public void run() {                setListAdapter(mAdapter);            }        });        registerForContextMenu(getListView());    }    private boolean allAccountsSignedOut() {        if (!mProviderCursor.moveToFirst()) return true;        do {            long accountId = mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN);            if (isSignedIn(accountId)) return false;        } while (mProviderCursor.moveToNext()) ;        return true;    }    @Override    public boolean onPrepareOptionsMenu(Menu menu) {        super.onPrepareOptionsMenu(menu);        menu.findItem(ID_SIGN_OUT_ALL).setVisible(!allAccountsSignedOut());        return true;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        menu.add(0, ID_SIGN_OUT_ALL, 0, R.string.menu_sign_out_all)                .setIcon(android.R.drawable.ic_menu_close_clear_cancel);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case ID_SIGN_OUT_ALL:                // Sign out MSN/AIM/YAHOO account                if (mApp.serviceConnected()) {                    for (IImConnection conn : mApp.getActiveConnections()) {                        try {                            conn.logout();                        } catch (RemoteException e) {                        }                    }                }                return true;        }        return super.onOptionsItemSelected(item);    }    @Override    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {        AdapterView.AdapterContextMenuInfo info;        try {            info = (AdapterView.AdapterContextMenuInfo) menuInfo;        } catch (ClassCastException e) {            Log.e(ImApp.LOG_TAG, "bad menuInfo", e);            return;        }        Cursor providerCursor = (Cursor) getListAdapter().getItem(info.position);        menu.setHeaderTitle(providerCursor.getString(PROVIDER_FULLNAME_COLUMN));        if (providerCursor.isNull(ACTIVE_ACCOUNT_ID_COLUMN)) {            menu.add(0, ID_ADD_ACCOUNT, 0, R.string.menu_add_account);            return;        }        long providerId = providerCursor.getLong(PROVIDER_ID_COLUMN);        long accountId = providerCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN);        boolean isLoggingIn = isSigningIn(accountId);        boolean isLoggedIn = isSignedIn(accountId);        if (!isLoggedIn) {            menu.add(0, ID_SIGN_IN, 0, R.string.sign_in)                .setIcon(R.drawable.ic_menu_login);        } else {            BrandingResources brandingRes = mApp.getBrandingResource(providerId);            menu.add(0, ID_VIEW_CONTACT_LIST, 0,                    brandingRes.getString(BrandingResourceIDs.STRING_MENU_CONTACT_LIST));            menu.add(0, ID_SIGN_OUT, 0, R.string.menu_sign_out)                .setIcon(android.R.drawable.ic_menu_close_clear_cancel);        }        if (!isLoggingIn && !isLoggedIn) {            menu.add(0, ID_EDIT_ACCOUNT, 0, R.string.menu_edit_account)                .setIcon(android.R.drawable.ic_menu_edit);            menu.add(0, ID_REMOVE_ACCOUNT, 0, R.string.menu_remove_account)                .setIcon(android.R.drawable.ic_menu_delete);        }        // always add a settings menu item        menu.add(0, ID_SETTINGS, 0, R.string.menu_settings);    }    @Override    public boolean onContextItemSelected(MenuItem item) {        AdapterView.AdapterContextMenuInfo info;        try {            info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();        } catch (ClassCastException e) {            Log.e(ImApp.LOG_TAG, "bad menuInfo", e);            return false;        }        int position = info.position;        long providerId = info.id;        switch (item.getItemId()) {        case ID_EDIT_ACCOUNT:        {            Cursor c = (Cursor)mAdapter.getItem(position);            if (c != null) {                Intent i = new Intent(ChooseAccountActivity.this, AccountActivity.class);                i.setAction(Intent.ACTION_EDIT);                i.setData(ContentUris.withAppendedId(Im.Account.CONTENT_URI,                        c.getLong(ACTIVE_ACCOUNT_ID_COLUMN)));                c.close();                startActivity(i);            }            return true;

⌨️ 快捷键说明

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