невозможно найти явный класс активности (Facebook Account Kit) - PullRequest
0 голосов
/ 29 марта 2019

Интегрирование Account Kit привело меня к проблеме ( Невозможно найти явный класс действий {com.app.mk.transport / com.facebook.accountkit.AccountKit}; объявили ли вы это действие в своем AndroidManifest.xml? )

вот код активности:

    private void signInWithPhone() {

    Intent intent = new Intent(MainActivity.this, AccountKit.class);
    AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
            new AccountKitConfiguration.AccountKitConfigurationBuilder(LoginType.PHONE, AccountKitActivity.ResponseType.TOKEN);

    intent.putExtra(AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION, configurationBuilder.build());
    startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        AccountKitLoginResult result = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
        if (result.getError() != null) {
            Toast.makeText(this, "" + result.getError().getErrorType().getMessage(), Toast.LENGTH_SHORT).show();
            return;
        } else if (result.wasCancelled()) {
            Toast.makeText(this, "Cancel login", Toast.LENGTH_SHORT).show();
        } else {
            if (result.getAccessToken() != null) {
                final android.app.AlertDialog waitingDialog = new SpotsDialog.Builder()
                        .setContext(this)
                        .setTheme(R.style.Orange)
                        .setMessage(R.string.waitingDialog_title)
                        .setCancelable(false)
                        .build();
                waitingDialog.show();

                //get current phone
                AccountKit.getCurrentAccount(new AccountKitCallback<Account>() {
                    @Override
                    public void onSuccess(Account account) {
                        final String userPhone = account.getPhoneNumber().toString();
                        users.orderByKey().equalTo(userPhone)
                                .addListenerForSingleValueEvent(new ValueEventListener() {
                                    @Override
                                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                        if (!dataSnapshot.child(userPhone).exists()) {
                                            User user = new User();
                                            user.setPhone(userPhone);
                                            user.setName(userPhone);
                                            user.setAvatarUrl("");
                                            user.setRates("0.0");
                                            //
                                            users.child(userPhone)
                                                    .setValue(user)
                                                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                                                        @Override
                                                        public void onSuccess(Void aVoid) {

                                                            users.child(userPhone)
                                                                    .addListenerForSingleValueEvent(new ValueEventListener() {
                                                                        @Override
                                                                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                                                            Common.currentUser = dataSnapshot.getValue(User.class);

                                                                            Intent homeIntent = new Intent(MainActivity.this, DriverHome.class);
                                                                            startActivity(homeIntent);

                                                                            waitingDialog.dismiss();
                                                                            finish();
                                                                        }

                                                                        @Override
                                                                        public void onCancelled(@NonNull DatabaseError databaseError) {

                                                                        }
                                                                    });
                                                        }
                                                    }).addOnFailureListener(new OnFailureListener() {
                                                @Override
                                                public void onFailure(@NonNull Exception e) {
                                                    Toast.makeText(MainActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
                                                }
                                            });
                                        } else {
                                            users.child(userPhone)
                                                    .addListenerForSingleValueEvent(new ValueEventListener() {
                                                        @Override
                                                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                                            Common.currentUser = dataSnapshot.getValue(User.class);

                                                            Intent homeIntent = new Intent(MainActivity.this, DriverHome.class);
                                                            startActivity(homeIntent);

                                                            waitingDialog.dismiss();
                                                            finish();
                                                        }

                                                        @Override
                                                        public void onCancelled(@NonNull DatabaseError databaseError) {

                                                        }
                                                    });
                                        }
                                    }

                                    @Override
                                    public void onCancelled(@NonNull DatabaseError databaseError) {

                                    }
                                });
                    }

                    @Override
                    public void onError(AccountKitError accountKitError) {

                        Toast.makeText(MainActivity.this, ""+accountKitError.getErrorType().getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    }
}

А вот и мой манифест:

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">


<meta-data android:name="com.facebook.accountkit.ApplicationName"
    android:value="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/FACEBOOK_APP_ID" />
<meta-data android:name="com.facebook.accountkit.ClientToken"
    android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />

<activity
    android:name="com.facebook.accountkit.ui.AccountKitActivity" />


<activity
    android:name=".DriverHome"
    android:label="@string/title_activity_driver_home"
    android:theme="@style/AppTheme.NoActionBar"></activity>


<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_maps_key" />
<meta-data
    android:name="com.google.android.places.API_KEY"
    android:value="<API_KEY>" />

<activity
    android:name=".TripDetail"
    android:label="@string/title_activity_trip_detail" />
<activity
    android:name=".DriverTracking"
    android:label="@string/title_activity_driver_tracking" />
<activity android:name=".CustommerCall" />
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
    android:excludeFromRecents="true"
    android:exported="true"
    android:launchMode="singleInstance"
    android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    tools:replace="android:launchMode" />

<service android:name="com.google.firebase.components.ComponentDiscoveryService" />

<meta-data
    android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
    android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
    android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />

<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />

<service android:name=".Service.MyFirebaseIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>
<service android:name=".Service.MyFirebaseMessaging">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

вот ошибка logcat:

2019-03-28 23:10:08.007 23508-23508/com.app.mk.transport E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.app.mk.transport, PID: 23508
    android.content.ActivityNotFoundException: Unable to find explicit activity class {com.app.mk.transport/com.facebook.accountkit.AccountKit}; have you declared this activity in your AndroidManifest.xml?
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1950)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622)
        at android.app.Activity.startActivityForResult(Activity.java:4564)
        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
        at android.app.Activity.startActivityForResult(Activity.java:4522)
        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
        at com.app.mk.transport.MainActivity.signInWithPhone(MainActivity.java:143)
        at com.app.mk.transport.MainActivity.access$000(MainActivity.java:45)
        at com.app.mk.transport.MainActivity$1.onClick(MainActivity.java:88)
        at android.view.View.performClick(View.java:6897)
        at android.widget.TextView.performClick(TextView.java:12693)
        at android.view.View$PerformClick.run(View.java:26101)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Я немного новичок в этом, поэтому любая помощь будет оценена: D, Спасибо.

...