第三方登入的簡單實現
阿新 • • 發佈:2019-02-07
.//app
public class App extends Application { @Override public void onCreate() { super.onCreate(); UMConfigure.init(this,"5b794cdaa40fa352d70002dc" ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0 PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); UMConfigure.setLogEnabled(true); }
//主頁面main
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 initView(); //進行操作 operation(); } private void operation() { rotate.setOnClickListener(this); alpha.setOnClickListener(this); scale.setOnClickListener(this); translate.setOnClickListener(this); value_p.setOnClickListener(this); donghuaji.setOnClickListener(this); shape_yuan.setOnClickListener(this); } private void initView() { shape_yuan = findViewById(R.id.shape_yuan); rotate = findViewById(R.id.rotate); alpha = findViewById(R.id.alpha); scale = findViewById(R.id.scale); translate = findViewById(R.id.translate); value_p = findViewById(R.id.Value_p); donghuaji = findViewById(R.id.donghuaji); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.rotate: ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(shape_yuan, "rotation", 0f, 360f);//新增旋轉動畫,旋轉中心預設為控制元件中點 objectAnimator.setDuration(3000);//設定動畫時間 objectAnimator.start(); break; case R.id.alpha: ObjectAnimator anim = ObjectAnimator.ofFloat(shape_yuan, "alpha", 1f, 0.1f, 1f, 0.5f, 1f); anim.setDuration(5000);// 動畫持續時間 anim.start(); break; case R.id.scale: AnimatorSet animatorSetsuofang = new AnimatorSet();//組合動畫 ObjectAnimator scaleX = ObjectAnimator.ofFloat(shape_yuan, "scaleX", 0, 1f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(shape_yuan, "scaleY", 0, 1f); animatorSetsuofang.setDuration(2000); animatorSetsuofang.setInterpolator(new DecelerateInterpolator()); animatorSetsuofang.play(scaleX).with(scaleY);//兩個動畫同時開始 animatorSetsuofang.start(); break; case R.id.translate: ObjectAnimator translationX = new ObjectAnimator().ofFloat(shape_yuan,"translationX",0,600f); ObjectAnimator translationY = new ObjectAnimator().ofFloat(shape_yuan,"translationY",0,0); AnimatorSet animatorSet = new AnimatorSet(); //組合動畫 animatorSet.playTogether(translationX,translationY); //設定動畫 animatorSet.setDuration(3000); //設定動畫時間 animatorSet.start(); //啟動 break; case R.id.Value_p: ObjectAnimator X = new ObjectAnimator().ofFloat(shape_yuan,"translationX",0,600); ObjectAnimator Y = new ObjectAnimator().ofFloat(shape_yuan,"translationY",0,600); ObjectAnimator ani = ObjectAnimator.ofFloat(shape_yuan, "alpha", 1f, 0.1f, 1f, 0.5f, 1f); AnimatorSet Set = new AnimatorSet(); //組合動畫 Set.playTogether(X,Y); //設定動畫 AnimatorSet S = new AnimatorSet(); //組合動畫 S.play(Set).with(ani); S.setDuration(3000); S.start(); break; case R.id.shape_yuan: Intent intent = new Intent(MainActivity.this,SanActivity.class); startActivity(intent); finish(); break; } } }
//子頁面san
public class SanActivity extends AppCompatActivity { private Button log_qq; private UMShareAPI mShareAPI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_san); initView(); mShareAPI=UMShareAPI.get(this); } private void initView() { log_qq = findViewById(R.id.log_qq); } public void login(View view) { UMAuthListener authListener = new UMAuthListener() { /** * @desc 授權開始的回撥 * @param platform 平臺名稱 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授權成功的回撥 * @param platform 平臺名稱 * @param action 行為序號,開發者用不上 * @param data 使用者資料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(SanActivity.this, "成功了", Toast.LENGTH_LONG).show(); Intent intent = new Intent(SanActivity.this,ProjectActivity.class); startActivity(intent); finish(); } /** * @desc 授權失敗的回撥 * @param platform 平臺名稱 * @param action 行為序號,開發者用不上 * @param t 錯誤原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(SanActivity.this, "失敗:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授權取消的回撥 * @param platform 平臺名稱 * @param action 行為序號,開發者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(SanActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; mShareAPI.getPlatformInfo(this,SHARE_MEDIA.QQ,authListener); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data); } }
//AndroidManifest.xml中的配置
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100424468" /> </intent-filter>
//依賴
implementation 'com.umeng.sdk:utdid:1.1.5.3' implementation 'com.umeng.sdk:common:latest.integration'