精华内容
下载资源
问答
  • Oracle Cloud云端账号注册过程

    千次阅读 2020-04-29 07:50:00
    Oracle Database 20c在云端已经提供预览版,但是如何到云端?在去年第4季度,Oracle Cloud的云服务有个推广活动,注册账号能永久免费开通使用2台云服务器+数据库以...

    Oracle Database 20c在云端已经提供预览版,但是如何到云端?在去年第4季度,Oracle Cloud的云服务有个推广活动,注册账号能永久免费开通使用2台云服务器+数据库以及其他的服务。

    但是,但是,经受不了广大网友的一顿狂撸,最近的韩国、日本的资源,可能已经撸没了,要是有些运气,可能会抢到别人删除的机器,据报道澳洲可能有些资源。然而,另外的问题,就是目前,用中国地区的IP和信用卡(注册需要,选择免费区域不会扣钱)已经不能注册。如果你在国外,或者FQ,才可能注册到,虽然说是免费,但主动权在人家,说收可能就收了,对普通人来说,能用一天,就占一天便宜。

    链接:https://www.oracle.com/cn/cloud/free/

    操作步骤如下,点【Start for Free】,

    填写个人信息,【Home Region】选了不能改,因此一定要选择存在免费主机的,

    填写地址、姓名等,

    填写手机号等,

    输入密码,字符12位要有一个大写一个小写还要有数字还要有特殊字符比如@#¥%这些,

    验证信用卡,验证要扣掉1新加坡币,会退还(或者会显示扣费失败),

    付款验证即可完成注册,

    但是目前,注册就会失败,原因不说自明,如果网络、信用卡都满足要求的,这些操作就会注册成功,得到一个云端的账号,即可享受Oracle云服务,

    近期热文:

    一次对linux系统无影响的python3环境搭建过程及思考

    PLSQL Developer几个可能的隐患

    从70万字SRE神作提炼出的7千字精华文章

    从数据误删到全量恢复的惊险记录

    last_load_time和last_active_time的选择

    DevOps的重要时刻

    truncate分区表的操作,会导致全局索引失效?

    NUMBER长度的误解

    decode函数再挖掘

    《decode函数的妙用》网友的两个问题解答

    decode函数的妙用

    虚拟内存详解
    公众号600篇文章分类和索引

    展开全文
  • 使用Bmob云端服务器模拟简单的注册登录

    万次阅读 热门讨论 2016-03-03 22:27:58
    前一阶段看徐宜生写的Android群英传里面介绍的搭建云端服务器,那个时候自己不懂,加上有其他的学习...环境搭建第一步:首先去Bmob官网注册自己的账号,创建自己的项目,获取到自己的专属AppLication ID,这个在初始化

    前一阶段看徐宜生写的Android群英传里面介绍的搭建云端服务器,那个时候自己不懂,加上有其他的学习,就没有深入,但是这两天找了资料研究了一下,读了官方文档,感觉挺不错的,服务端不用自己搭建了。(听说集成了好多东西,可以聊天、支付、分享、注册什么的)那就自己模拟一下注册登录吧。

    环境搭建

    第一步:首先去Bmob官网注册自己的账号,创建自己的项目,获取到自己的专属AppLication ID,这个在初始化的时候需要用到的。

    注册完成并且创建好项目后,点击设置,就会看到这个,在这里可以获取到用于初始化的AppLication ID

    第二步:下载需要的sdk,然后把下载好的sdk里面的BmobSDK_V3.4.5_1111.jar这个文件放到libs目录下面(解压出来的有四个,我这里没有用到其他的三个,有用到的可以一起放到libs目录下),然后右键选择Add library,点击确定即可。这里提供官方集成文档地址,关于集成和介绍,官方写的很详细:http://docs.bmob.cn/android/developdoc/index.html?menukey=develop_doc&key=develop_android

    第三步:既然项目已经创建,需要的资源也已经搭建好,开始我们的工作了,我先说下,这里我们需要以下的几个文件,LoginActivity(登录) RegisterActivity(注册) MAinInfoActivity(登录成功返回的信息) User(用户信息bean)

    其实很简单,在这里我直接上代码,因为Bmob已经为我们写好了后台,对于数据库的增删改查都已经封装好了,我们只是简单的调用就行(必要的解释我写在注释里面)

    User.java:

    public class User extends BmobUser {
    
        //这个BmobFile是特有的,我们可以用来上传我们的图片(头像资源)
        private BmobFile icon;
    
        public BmobFile getIcon() {
            return icon;
        }
    
        public void setIcon(BmobFile icon) {
            this.icon = icon;
        }
    }

    LoginActivity.java:

    package com.example.wuyinlei.mybomb;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import cn.bmob.v3.Bmob;
    import cn.bmob.v3.BmobUser;
    import cn.bmob.v3.listener.SaveListener;
    
    public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
    
    
        private EditText etusername;
        private EditText etpassword;
        private Button login;
        private Button sign;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            //这里的AppLication ID 写上自己创建项目得到的那个AppLication ID
            Bmob.initialize(this, "Application ID");
            initialize();
            initView();
        }
    
        private void initView() {
    
        }
    
        private void initialize() {
    
            etusername = (EditText) findViewById(R.id.et_username);
            etpassword = (EditText) findViewById(R.id.et_password);
            login = (Button) findViewById(R.id.login);
            login.setOnClickListener(this);
            sign = (Button) findViewById(R.id.sign);
            sign.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.login:
                    final String username = etusername.getText().toString();
                    String password = etpassword.getText().toString();
    
                    if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)){
                        final BmobUser bmobUser = new BmobUser();
                        bmobUser.setUsername(username);
                        bmobUser.setPassword(password);
    
                        bmobUser.login(LoginActivity.this, new SaveListener() {
                            @Override
                            public void onSuccess() {
                                //获取到当前用户的信息
                                User user = BmobUser.getCurrentUser(LoginActivity.this,User.class);
                                Intent intent = new Intent(LoginActivity.this,MainInfoActivity.class);
                                intent.putExtra("user",user);
                                startActivity(intent);
                                //登录成功
                                Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                            }
    
                            @Override
                            public void onFailure(int i, String s) {
    
                            }
                        });
    
                    }
                    break;
                case R.id.sign:
                    Intent intent = new Intent(this,RegisterActivity.class);
                    startActivity(intent);
                    break;
            }
        }
    }
    

    activity_login.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.wuyinlei.mybomb.LoginActivity">
    
    
        <EditText
            android:id="@+id/et_username"
            android:hint="登录名"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <EditText
            android:id="@+id/et_password"
            android:hint="密码"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
       <LinearLayout
           android:orientation="horizontal"
           android:layout_width="match_parent"
           android:layout_height="wrap_content">
    
           <Button
               android:id="@+id/login"
               android:layout_width="0dp"
               android:layout_weight="1"
               android:text="登录"
               android:layout_height="wrap_content" />
           <Button
               android:id="@+id/sign"
               android:text="注册"
               android:layout_weight="1"
               android:layout_width="0dp"
               android:layout_height="wrap_content" />
       </LinearLayout>
    
    </LinearLayout>
    

    RegisterActivity.java:

    package com.example.wuyinlei.mybomb;
    
    import android.os.Bundle;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import java.io.File;
    
    import cn.bmob.v3.datatype.BmobFile;
    import cn.bmob.v3.listener.SaveListener;
    import cn.bmob.v3.listener.UploadFileListener;
    
    public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
    
    
        private EditText etusername;
        private EditText etpassword;
        private EditText etemail;
        private EditText eticon;
        private Button register;
        private Button cancel;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            initialize();
        }
    
        private void initialize() {
    
            etusername = (EditText) findViewById(R.id.et_username);
            etpassword = (EditText) findViewById(R.id.et_password);
            etemail = (EditText) findViewById(R.id.et_email);
            register = (Button) findViewById(R.id.register);
            register.setOnClickListener(this);
            cancel = (Button) findViewById(R.id.cancel);
            cancel.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.register:
                    registerData();
                    break;
                case R.id.cancel:
    
                    break;
            }
        }
    
        /**
         * 注册
         */
        private void registerData() {
    
            final String name = etusername.getText().toString();
            final String password = etpassword.getText().toString();
            final String email = etemail.getText().toString();
            String path ;
    
            //获取图片文件的路径(我在个文件路径下面放了一个1.jpg图片)
            path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/1.jpg";
    
            final BmobFile bmobFile = new BmobFile(new File(path));
            bmobFile.upload(this, new UploadFileListener() {
                @Override
                public void onSuccess() {
                    //上传成功
                    User user = new User();
                    user.setUsername(name);
                    //user.setIcon(icon);
                    user.setEmail(email);
                    user.setPassword(password);
                    user.setIcon(bmobFile);
                    //注册(这个是已经提供好的接口)
                    user.signUp(RegisterActivity.this, new SaveListener() {
                        @Override
                        public void onSuccess() {
                            Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                        }
    
                        @Override
                        public void onFailure(int i, String s) {
                            Toast.makeText(RegisterActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
                        }
                    });
    
                }
    
                @Override
                public void onFailure(int i, String s) {
                    Log.d("RegisterActivity", "报错了" + s.toString());
                }
            });
        }
    }
    

    activity_register.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent"
        tools:context="com.example.wuyinlei.mybomb.RegisterActivity">
    
        <EditText
            android:id="@+id/et_username"
            android:hint="登录名"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <EditText
            android:id="@+id/et_password"
            android:hint="密码"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <EditText
            android:id="@+id/et_email"
            android:hint="邮箱"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:id="@+id/register"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="注册"
                android:layout_height="wrap_content" />
            <Button
                android:id="@+id/cancel"
                android:text="取消"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content" />
    
        </LinearLayout>
    </LinearLayout>
    

    MainInfoActivity.java:

    package com.example.wuyinlei.mybomb;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import cn.bmob.v3.datatype.BmobFile;
    
    public class MainInfoActivity extends AppCompatActivity {
    
        private TextView etusername;
        private ImageView icon;
        private User user;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
            user = (User) getIntent().getSerializableExtra("user");
            initialize();
        }
    
        private void initialize() {
            etusername = (TextView) findViewById(R.id.et_username);
            icon = (ImageView) findViewById(R.id.icon);
            etusername.setText(user.getUsername());
            BmobFile file = user.getIcon();
            //加载全图
            //file.loadImage(this,icon);
            //加载缩略图  自己定义大小和质量第三个第四个参数是我们要加载图片显示的大小,第五个是显示的质量(100最好)
            file.loadImageThumbnail(this,icon,100,100,50);
        }
    }
    

    main_info_activity.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainInfoActivity">
    
    
        <TextView
            android:textSize="24dp"
            android:id="@+id/et_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>
    

    基本上所有的代码都在上面了,这里需要解释的一个,User表,在使用的时候自动创建,然后我们可以使用它暴漏出来的接口去增删改查,实际上我们的模拟登陆就是使用了增、查、显示我们查到的数据。我们来看下实现的效果:
    这里写图片描述
    这里我们看到基本的逻辑都实现了,只是界面有待优化哈。好了,今天就到这里了,如果后期有时间,会对Bmob有点讲解。后面会有一个关与基于Bmob的使用完成的便签功能(也是很简单实现的)。

    说明

    以上的关于有网友说代码错误,再此说下,bmob的版本升级,关于某些方法已经弃用,导致导入代码之后有误,这里我最近也写了一些demo,也是运用的bmob的注册登录,大家可以去看下。https://github.com/wuyinlei/MyHearts(仿我心的一个demo,里面会有其他的一般开发会用到的知识)。
    如果你仅仅是想看bmob的注册登录,这里我会写给出以下两个和bmob有关的两个类。

     /** 
         * 进行注册 
         */ 
        private void doRegister() { 
            CustomPrograss.show(this,getResources()
                    .getString(R.string.register_loading),false,null);
            String userName = mEditName.getText().toString().trim();
            final MyUser myUser = new MyUser();
            if (RegularUtils.isUsername(userName)) {
                myUser.setUsername(userName);
                myUser.setPassword(pwd);
                myUser.setMobilePhoneNumber(phone);
                addSubscription(myUser.signUp(new SaveListener<MyUser>() {
                    @Override 
                    public void done(MyUser myUser, BmobException e) {
                        if (e == null) {
                            Toast.makeText(RegisterSecondActivity.this,getResources().getString(R.string.register_success),
                                    Toast.LENGTH_SHORT).show();
                            PreferencesUtils.putString(RegisterSecondActivity.this,
                                    "user",userName);
                            PreferencesUtils.putString(RegisterSecondActivity.this,
                                    "pwd",pwd);
                            startActivity(new Intent(RegisterSecondActivity.this,
                                    LoginActivity.class));
                            CustomPrograss.disMiss(); 
                        } else { 
                            //注册失败 
                            Toast.makeText(RegisterSecondActivity.this,
                                    getResources().getString(R.string.register_failed),
                                    Toast.LENGTH_SHORT).show();
                            CustomPrograss.disMiss(); 
                        } 
                    } 
                })); 
            } 
    
        } 
     /**
         * 登录账户
         *
         * @param name 用户名
         * @param pwd  密码
         */
        private void toLogin(String name, String pwd) {
    
            CustomPrograss.show(this, getResources().getString(R.string.loading), false, null);
            final BmobUser bmobUser = new BmobUser();
            bmobUser.setUsername(name);
            bmobUser.setPassword(pwd);
    
            bmobUser.loginObservable(BmobUser.class).subscribe(new Subscriber<BmobUser>() {
                @Override
                public void onCompleted() {
                    CustomPrograss.disMiss();
                    Toast.makeText(LoginActivity.this,
                            getResources().getString(R.string.login_success),
                            Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onError(Throwable e) {
                    CustomPrograss.disMiss();
                }
    
                @Override
                public void onNext(BmobUser bmobUser) {
    
    
                    if (!mIsPasswordMemory.isChecked()) {  //如果用户没有点击记住密码  那就清除密码
                        PreferencesUtils.putBoolean(LoginActivity.this, "is_select", false);
                        PreferencesUtils.putString(LoginActivity.this, "pwd", "");
                        PreferencesUtils.putString(LoginActivity.this,"user","");
                    } else { //否则就保存密码
                        PreferencesUtils.putBoolean(LoginActivity.this, "is_select", true);
                        PreferencesUtils.putString(LoginActivity.this, "pwd", pwd);
                        PreferencesUtils.putString(LoginActivity.this,"user",name);
                    }
    
    
                    MyUser myUser = BmobUser.getCurrentUser(MyUser.class);
                 //   myUser.setUsername(name);
                    EventBus.getDefault().post(new LoginEvent(myUser));
    
                   // Intent intent = new Intent(LoginActivity.this, MainActivityDrawerLayout.class);
                  //  intent.putExtra(Contants.IS_COME_FROM_LOGIN, true);
                   // startActivity(intent);
                    finish();
                }
    
            });
    
        }
    

    最后

    这里再次说明以下,以上最新注册登录逻辑在https://github.com/wuyinlei/MyHearts这个地址,怎么导入这个方法已经有了详细说明(如果有疑问可以添加qq联系)。还有就是最好看下bmob的官网,看下他们的文档。

    展开全文
  • 注册,登录用的最多的当然还是手机号和第三方平台提供的,今天就来实现...完成注册后登录账号到网站后台创建应用,选择相应的应用类型即可。 创建完成后点击你的应用 跳转到相应的页面后点击设置你就会看到自己

    注册,登录用的最多的当然还是手机号和第三方平台提供的,今天就来实现一下使用Bmob提供的云端服务实现一个简单的注册,登录功能。
    要想使用Bmob云端服务需要到官网去注册获得开发者资格,注册地址:https://www.bmob.cn/register
    这里写图片描述
    完成注册后登录账号到网站后台创建应用,选择相应的应用类型即可。
    这里写图片描述
    创建完成后点击你的应用
    这里写图片描述
    跳转到相应的页面后点击设置你就会看到自己获得的APPID及秘钥
    这里写图片描述
    下面开始我们的集成之路吧
    新建一个项目名为BmobLoginDemo 然后在Project的build.gradle中添加Bmob仓库地址

    allprojects {
        repositories {
            jcenter()
            //Bmob的maven仓库地址,必须填写
            maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
        }
    }

    然后在App的build.gradle中添加依赖库

    compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'

    打开Androidmanifest在里面添加访问网络权限

     <uses-permission android:name="android.permission.INTERNET" />

    下面就是代码部分了布局文件activity_main

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.shiran.bmoblogindemo.MainActivity">
    
    
       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_margin="5dp"
           android:orientation="vertical">
    
        <EditText
            android:id="@+id/et_user_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="用户名"/>
    
        <EditText
            android:id="@+id/et_user_pwd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:hint="密码"/>
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="点击注册"
            android:onClick="btnShow"
            android:textSize="16sp"/>
    
        <Button
            android:id="@+id/btn_go_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="去登录"
            android:textSize="16sp"/>
    
        </LinearLayout>
    </LinearLayout>
    

    MainActivity中的代码

    package com.shiran.bmoblogindemo;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import cn.bmob.v3.Bmob;
    import cn.bmob.v3.BmobUser;
    import cn.bmob.v3.listener.SaveListener;
    
    public class MainActivity extends AppCompatActivity {
        private static final String TAG = "MainActivity";
        private static final String APP_ID = ""; //把你在Bmob官网获取的APPID放到这里
        private EditText mEtUserName = null;
        private EditText mEtPassWord = null;
        private Button mBtnGoLogin = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Bmob.initialize(this,APP_ID); //初始化BmobSDK
            mEtUserName = (EditText) findViewById(R.id.et_user_name);
            mEtPassWord = (EditText) findViewById(R.id.et_user_pwd);
            mBtnGoLogin = (Button) findViewById(R.id.btn_go_login);
            mBtnGoLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                    startActivity(intent);
                }
            });
        }
    
        public void btnShow(View v) {
            final String username = mEtUserName.getText().toString();
            final String password = mEtPassWord.getText().toString();
    
            if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
                Toast.makeText(MainActivity.this, "用户名密码不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
    
            if (mEtUserName.length() < 4) {
                Toast.makeText(this, "用户名不能少于4位", Toast.LENGTH_SHORT).show();
                return;
            }
    
            if (mEtPassWord.length() < 6) {
                Toast.makeText(this, "密码不能低于6位", Toast.LENGTH_SHORT).show();
                return;
            }
    
            /**
             * Bmob注册
             */
            final BmobUser user = new BmobUser();
            user.setUsername(username);
            user.setPassword(password);
            user.signUp(MainActivity.this, new SaveListener() { //回调2个方法,成功,失败
                @Override
                public void onSuccess() {
                    Toast.makeText(MainActivity.this, "注册成功,去登录", Toast.LENGTH_SHORT).show();
                    Log.e(TAG, "onSuccess: "+ "注册成功");
                }
    
                @Override
                public void onFailure(int i, String s) {
                    Toast.makeText(MainActivity.this, "注册失败,用户名已存在或网络问题", Toast.LENGTH_SHORT).show();
                    Log.e(TAG, "onFailure: "+s.toString());
    
                }
            });
        }
    }
    

    到这里注册就已经完成了,接下来就是LoginActivity中的代码
    布局文件activity_login

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.shiran.bmoblogindemo.LoginActivity">
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:orientation="vertical">
    
         <EditText
             android:id="@+id/et_login_name"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="请输入您的账号"/>
    
         <EditText
             android:id="@+id/et_login_pwd"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:inputType="textPassword"
             android:hint="请输入您的密码"/>
    
         <Button
             android:id="@+id/btn_login"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="点击登录"
             android:onClick="btnShowLogin"
             android:textSize="16sp"/>
    
     </LinearLayout>
    </LinearLayout>
    

    LoginActivity.java中的代码

    package com.shiran.bmoblogindemo;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import cn.bmob.v3.BmobUser;
    import cn.bmob.v3.listener.SaveListener;
    
    public class LoginActivity extends AppCompatActivity {
        private EditText mEtUserName = null;
        private EditText mEtPassWord = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            mEtUserName = (EditText) findViewById(R.id.et_login_name);
            mEtPassWord = (EditText) findViewById(R.id.et_login_pwd);
    
        }
    
        public void btnShowLogin(View v) {
            final String username = mEtUserName.getText().toString();
            final String password = mEtPassWord.getText().toString();
    
            if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
                Toast.makeText(LoginActivity.this, "用户名密码不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
    
            final BmobUser user = new BmobUser();
            user.setUsername(username);
            user.setPassword(password);
            user.login(LoginActivity.this, new SaveListener() {
                @Override
                public void onSuccess() {
                    Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(LoginActivity.this, LoginSuccessActivity.class);
                    startActivity(intent);
    
                }
    
                @Override
                public void onFailure(int i, String s) {
                    Toast.makeText(LoginActivity.this, "登录失败,请检查用户名及密码", Toast.LENGTH_SHORT).show();
    
                }
            });
        }
    }
    

    登录中的代码基本和注册时的代码一样只是把user.signUp改成了user.login
    最后把登录成功后的代码也一块贴上来吧
    布局文件activity_login_success

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.shiran.bmoblogindemo.LoginSuccessActivity">
    
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Login Success"
            android:textSize="18sp"/>
    
    </RelativeLayout>
    

    LoginSuccessActivity.Java代码

    package com.shiran.bmoblogindemo;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class LoginSuccessActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login_success);
        }
    }
    

    来看一下效果图
    这里写图片描述这里写图片描述
    打开Bmob的控制台找到自己刚才创建的应用,你会看到云数据库中有一个_User表刚才我们注册的用户名和密码已经保存到了这个表中
    这里写图片描述
    已经完成了一个简单的注册登录,大家有兴趣的话可以根据Bmob提供的文档来进一步完善此功能。

    展开全文
  • 成功注册一个谷歌账号

    千次阅读 2020-06-02 14:47:49
    为了注册一个谷歌账号,真的是折腾了不少。。。 一开始我是用chrome浏览器,进入谷歌云端硬盘(链接),然后点击创建帐户 号,然后选择 为我自己创建; 按照提示一步一步地填写,邮箱那块我用的是自己的邮箱(qq邮箱...

    最近想使用Colab(提供免费的GPU),查看了很多资料,首先是需要一个谷歌账号。为了注册一个谷歌账号,真的是折腾了不少。。。
    一开始我是用chrome浏览器,进入谷歌云端硬盘(链接),然后点击创建帐户
    号,然后选择 为我自己创建;
    在这里插入图片描述
    在这里插入图片描述
    按照提示一步一步地填写,邮箱那块我用的是自己的邮箱(qq邮箱,网易邮箱都行);
    然后谷歌会给你的邮箱发一个验证码,把验证码输入进去,邮箱就验证完毕.
    接下来就是验证手机号:
    在这里插入图片描述
    手机号验证不成功
    试了各种方法,都不行
    (1)有说填手机号那块,不要+,86跟手机号之间留空格;(行不通)
    (2)利用手机上的QQ邮箱(或者网易邮箱)来注册(行不通)
    在这里插入图片描述
    (3)换掉浏览器的使用语言(换成中文繁体,英语)(行不通)
    (4)更换浏览器(有点麻烦就没试过)
    (5)利用手机里设置里的Google(我的手机里好像用不了)
    在这里插入图片描述
    (6)手机安装 酷酷跑 然后搜索框里搜 谷歌,然后就有一个注册谷歌账号的箭头,点进去;
    (7)手机安装 谷歌空间 界面有个添加谷歌账号,点进去操作即可。

    展开全文
  • 云端代码的实践

    2016-09-11 21:11:00
    Bmob的云端代码 可以由手机发起请求调用在云端你写好的方法(需要js来写),比如可以在手机端 用户注册成功的时候,调用云端代码,把账号密码作为参数调用,云端代码中可以得到参数,做希望做的操作,再把结果返回。...
  • 为了注册一个谷歌账号,真的是折腾了不少。。。 一开始我是用chrome浏览器,进入谷歌云端硬盘(链接),然后点击创建帐户 号,然后选择 为我自己创建; 在这里插入图片描述 在这里插入图片描述 按照提示一步一步地填写...
  • 在http://www.apicloud.com注册账号。 创建你的应用,并记录你的appId和appKey。 在云端设计你的数据库表。 Jquery如下访问云端数据 另外注意到上述代码中的$.sha1函数了吗,这个是云端要求的一种加密。下载...
  • markdown云端写作平台

    2020-03-07 20:14:19
    注册账号后默认可以免费创建10个公开space和10个私有space,每个space即是一本书。 另外可以额外创建多个organization组织,然后在organization中继续创建space, 每个organization只有14天的使用期限。 官网定价:.....
  • 访问 heroku.com 注册免费账号注册页面需要调用 google recaptcha 人机验证,登录页面也需要科学地进行上网,访问 app 运行页面则没有该问题),免费账号最多可以创建和运行5个 app。 Redis Labs(可选) 访问 ...
  • 随着文明时代的进步,信息逐渐迈向云端化,以前花费很多时间开发一套程序,如今轻轻松松就可以完成。即使一个人也可以在很短的时间内,完成一项很大的工程,这完全...在云端上开发,用户只要注册一个云账号,使用云端
  • 使用Bmob云端代码开发微信公众平台...注册bmob账号...2 2. 创建应用...3 3. 数据的基本操作...4 4. 云端代码...5 4.1云端代码的基本知识...5 4.2 用云端代码实现"helleworld".7...
  • 1、登录谷歌云端硬盘,注册账号。 2、新建Colaboratory文件new(用于编写调试程序的),更改设置为GPU模式。 3、在new界面通过三步关联自己谷歌云端路径: 1)第一步,输入以下代码,并运行。 期间会弹出两个网址,...
  • 首先欢迎您使用云端存储系统,此系统是为了方便学校机房、网吧、企业单位文件网络存储,采用C/S模式,服务器、客户端两个程式,服务器负责所有客户端文件的上传下载、用户注册、信息管理,客户端负责文件上传、下载...
  • Heroku连接云端MongoDB的方法

    千次阅读 2017-03-07 09:30:48
    之前我们已经简单的在Heroku上部署了正在开发的web应用, 现在我们的应用要...注册MongoLab账号我们这里将使用MongoLab, 首先需要注册账号, 相关文档请见这里创建一个新数据库登陆后按照如下操作选择single node, sandbo
  • MEGA 简介 空间大、流量多、速度快或者很安全,对于云端网盘,你最在乎哪方面?如果储存私人敏感信息,当然是安全和隐私最为重要了。 MEGA 就是一款主打安全隐私的网盘,所有数据...MEGA 为所有注册用户提供 50GB 免...
  • 注册并登录华为OceanConnect平台,需要使用华为云账号登录。 进入后界面如下: 2. 云端操作 — 创建云端设备 2.1. 创建项目 点击创建项目: 填写信息之后提交: 创建之后,系统会弹出分配的应用ID和秘钥,应点击...
  • 注册并登录华为OceanConnect平台,需要使用华为云账号登录。 进入后界面如下: 2. 云端操作 — 创建云端设备 2.1. 创建项目 点击创建项目: 填写信息之后提交: 创建之后,系统会弹出分配的应用ID和秘钥,应点击...
  • 注册一个账号,新建一个仓库 点击这里生成 ssh 公钥备用 进入码云点击设置, ssh 公钥,将刚刚设置好得公钥添加到公钥处然后确认 点击进入git 官网,下载与你计算机匹配的 git,并下一步下一步安装 ...
  • 小程序支持云端存储和本地存储,云端存储数据支持SM4和AES加密,同时支持用户管理,以便授权其他人使用云端存储权限。 体验 部署 注册一个小程序 在project.config.json里补充小程序的appid 开通云开发,在...
  • 注册并登录华为OceanConnect平台,需要使用华为云账号登录。 进入后界面如下: 2. 云端操作 — 创建云端设备 2.1. 创建项目 点击创建项目: 填写信息之后提交: 创建之后,系统会弹出分配的应用ID和秘钥,应点击...
  • 小程序支持云端存储和本地存储,云端存储数据支持SM4和AES加密,同时支持用户管理,以便授权其他人使用云端存储权限。 体验 部署 注册一个小程序 在project.config.json里补充小程序的appid 开通云开发,在...
  • 1. 云端准备工作 —— 注册并登录OC平台注册并登录华为OceanConnect平台,需要使用华为云账号登录。进入后界面如下:2. 云端操作 — 创建云端设备2.1. 创建项目点击创建项目:填写信息之后提交:创建之后,系统会弹...
  • 1. 云端准备工作 —— 注册并登录OC平台注册并登录华为OceanConnect平台,需要使用华为云账号登录。进入后界面如下:2. 云端操作 — 创建云端设备2.1. 创建项目点击创建项目:填写信息之后提交:创建之后,系统会弹...
  • 一,注册账号  开发者点击apkplug官网右上角的注册按钮注册开发帐号。注册完成以后可以登录进入后台插件管理平台   二,上传应用  开发者上传应用后系统会自动解析apk包并区分主应用和插件。  ...
  • 阿里云物联网云端开发之脚本解析

    千次阅读 2019-02-26 19:14:22
    一、注册阿里云账号登录物联网平台(过程省略) 二、在物联网平台中创建一个高级版透传格式产品 三、为产品添加一个设备(过程根据阿里云文档自行创建) 四、为产品添加功能,如下 五、根据报文内容编写脚本 ...
  • 这种方式我觉得最简单,但是有个前提是你需要有七牛云的账号注册免费账号还需要提供个人身份证等资料,而且存储空间有限,我当时时间比较紧,而且公司就有付费的七牛云账号,我就直接将图片上传到七牛云上,然后...
  • 默认情况下,使用邮箱推送的个人文档或从 Kindle 商店购买的电子书,都会自动存档在你的亚马逊账号下,这不仅可以节省 Kindle 设备的有限磁盘空间,也方便注册同一账号的的不同 Kindle 设备共享这些内容。虽然云端...
  • 注册一个可用的学生账号 1.首先你得有一个学校的邮箱账号 一般情况下,都是在学校的官网登录个人账号,开通邮箱,格式为学号+学校域名+edu+cn。不过毕业以后,学校会不会把邮箱收回,就另当别论了,反正在学生账户...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

云端账号注册