0
我有一个登录在android的问题。我在android facebook sdk中稍微有点新。在我的模拟器Facebook登录工作正常,但在真实的手机它不起作用。我也试过7.0,它也使模拟器的问题。我在网上找不到任何相同的问题。所以这是我的错误信息。Facebook的登录按钮不能在Android上工作5.0
感谢您的帮助。
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/customtabs/CustomTabsIntent$Builder;
at com.facebook.internal.CustomTab.openCustomTab(CustomTab.java:47)
at com.facebook.CustomTabMainActivity.onCreate(CustomTabMainActivity.java:67)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
也是我在下面的代码..
*
该代码可以使用模拟器和低于5.0版本的机器人。一些人认为它可以与chrome-custom tab相关。但它>适用于镀铬安装设备。
*
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wrexsoft.canturgut.mobileclassapp">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity
android:name=".OpenScreen"
android:label="Init Activity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SignInScreen"></activity>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<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="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
这是我的活动Java文件...
public class OpenScreen extends AppCompatActivity {
TextView headline;
Button openScreen_button_signin;
Button openScreen_button_kusignin;
private CallbackManager callbackManager;
private DatabaseReference patideDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_screen);
LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions("email");
loginButton.setReadPermissions("public_profile");
patideDatabase = FirebaseDatabase.getInstance().getReference();
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getBaseContext(), "SUCCESS", Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getBaseContext(), "CANCEL", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(getBaseContext(), exception.toString(), Toast.LENGTH_LONG).show();
}
});
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
ProgressDialog progressDialog = new ProgressDialog(OpenScreen.this);
progressDialog.setMessage("Proceed data...");
progressDialog.show();
String accessToken = loginResult.getAccessToken().getToken();
Log.i("accessToken", accessToken);
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.i("LoginActivity", response.toString());
// Get facebook data from login
Bundle bFacebookData = getFacebookData(object);
String username = bFacebookData.get("first_name").toString();
String userSurname = bFacebookData.get("last_name").toString();
String email = bFacebookData.get("email").toString();
HashMap<String, String> userData = new HashMap<String, String>();
userData.put("Name",username+" "+userSurname);
userData.put("Email",email);
patideDatabase.push().setValue(userData);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, first_name, last_name, email");
request.setParameters(parameters);
request.executeAsync();
progressDialog.cancel();
}
@Override
public void onCancel() {
Toast.makeText(getBaseContext(),"Login Cancelled", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException e) {
Toast.makeText(getBaseContext(),"Problem connecting to Facebook", Toast.LENGTH_SHORT).show();
}
});
headline = (TextView)findViewById(R.id.headline);
openScreen_button_signin = (Button) findViewById(R.id.openscreen_button_signin);
openScreen_button_kusignin = (Button) findViewById(R.id.openscreen_button_kusissignin);
openScreen_button_signin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), SignInScreen.class);
intent.putExtra("signinType","normal");
startActivity(intent);
}
});
openScreen_button_kusignin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), SignInScreen.class);
intent.putExtra("signinType","kusis");
startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private Bundle getFacebookData(JSONObject object) {
try {
Bundle bundle = new Bundle();
String id = object.getString("id");
bundle.putString("idFacebook", id);
if (object.has("first_name"))
bundle.putString("first_name", object.getString("first_name"));
if (object.has("last_name"))
bundle.putString("last_name", object.getString("last_name"));
if (object.has("email"))
bundle.putString("email", object.getString("email"));
return bundle;
} catch (JSONException e) {
Bundle bundle = new Bundle();
return bundle;
}
}}
以防万一我使用FireBase ...