GVKun编程网logo

android – 如何使用“CookieManager :: removeAllCookies(ValueCallback callback)”(android app cookie)

6

本篇文章给大家谈谈android–如何使用“CookieManager::removeAllCookies(ValueCallbackcallback)”,以及androidappcookie的知识点

本篇文章给大家谈谈android – 如何使用“CookieManager :: removeAllCookies(ValueCallback callback)”,以及android app cookie的知识点,同时本文还将给你拓展Android Facebook SDK-authorizeCallback()问题、Android Retrofit RecyclerView 错误:类型不兼容:> 无法转换为 Callback、android – CookieManager中的多个cookie、android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

android – 如何使用“CookieManager :: removeAllCookies(ValueCallback callback)”(android app cookie)

android – 如何使用“CookieManager :: removeAllCookies(ValueCallback callback)”(android app cookie)

我是 java的新手并尝试使用CookieManager :: removeAllCookies(ValueCallback回调)方法删除WebView cookie.无法确定必须将哪些值传递给removeAllCookie方法.

文档https://developer.android.com/reference/android/webkit/ValueCallback.html和https://developer.android.com/reference/android/webkit/CookieManager.html#getInstance%28%29没有说明如何使用它.

我的理解是ValueCallback类似于c模板.但无法理解为什么需要传递一个对象来删除cookie.

解决方法

从文档:

If a ValueCallback is provided,onReceiveValue() will be called on the current thread’s Looper once the operation is complete. The value provided to the callback indicates whether any cookies were removed. You can pass null as the callback if you don’t need to kNow when the operation completes or whether any cookies were removed

所以你可以做到这一点

CookieManager.getInstance().removeAllCookies(new ValueCallback<Boolean>() {
           @Override
           public void onReceiveValue(Boolean value) {
               Log.d(TAG,"onReceiveValue " + value);
           }
       });

要么

CookieManager.getInstance().removeAllCookies(null);

此方法在API级别21中引入.如果您支持旧版本,则可能必须提供类似的内容.

if(API Level >= 21){
     CookieManager.getInstance().removeAllCookies(null);
}else{
  CookieManager.getInstance().removeAllCookie();
}

Android Facebook SDK-authorizeCallback()问题

Android Facebook SDK-authorizeCallback()问题

我有一个Android应用程序,该应用程序除其他外还可以在Facebook上发布更新.

我根据this示例创建了代码,它工作得很好.我的代码和上面的链接中的代码唯一的区别是,我还扩展了onActivityResult,如Android版官方Facebook SDK所述.

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebookClient.authorizeCallback(requestCode, resultCode, data);
}

但是,有时在onActivityResult()方法中调用“ facebook.authorizeCallback()”的行上会出现空指针异常.

这在我的任何手机或仿真器上都从未发生过.但是,我一直在收到用户崩溃报告,大部分来自Droid和T-Mobile myTouch 3G手机.我尝试了很多,但无法重现该问题.任何机构都知道可能出什么问题吗?

解决方法:

通过查看Facebook.java代码,似乎DialogListener并作为类中的私有参数保存…当调用authorizeCallback()时,您假定DialogListener退出并且不为null.但是,如果您的电话内存不足(例如我的G1内存不足),您的通话活动将被杀死,以腾出内存供Facebook登录过程使用,从而在您调用autherizeCallback函数时擦除DialogListener的情况下,您将获得空指针异常或忽略回调.
这可能是导致您出现问题的原因.

Android Retrofit RecyclerView 错误:类型不兼容:<anonymous Callback<ServiceResponse>> 无法转换为 Callback<Service>

Android Retrofit RecyclerView 错误:类型不兼容:> 无法转换为 Callback

如何解决Android Retrofit RecyclerView 错误:类型不兼容:<anonymous Callback<ServiceResponse>> 无法转换为 Callback<Service>?

我正在尝试从我朋友创建的 API 中创建 RecyclerView。

但是突然我有这个问题,帮我解决这个问题:''(

我不知道这是什么意思,因为这是我第一次使用 RecyclerView Data 进行改造。非常感谢您的帮助。

/home/ardityoc/AndroidStudioProjects/HomeCare/app/src/main/java/com/humic/android/homecare/ui/user/home/HomeFragment.java:83: error: incompatible types: <anonymous Callback<ServiceResponse>> cannot be converted to Callback<Service>
    ServiceApiService.getAllServicesUserRequest("Bearer " + loadToken()).enqueue(new Callback<ServiceResponse>() {
                                                                                 ^

这是我的HomeFragment.java

package com.humic.android.homecare.ui.user.home;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.linearlayoutmanager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.humic.android.homecare.R;
import com.humic.android.homecare.activity.user.MainActivity;
import com.humic.android.homecare.adapter.RecyclerViewServiceAdapter;
import com.humic.android.homecare.model.Service;
import com.humic.android.homecare.rest.apiclient;
import com.humic.android.homecare.rest.ApiInterface;
import com.humic.android.homecare.rest.service.ServiceResponse;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

import static android.content.Context.MODE_PRIVATE;
import static com.humic.android.homecare.activity.LoginActivity.userToken;
import static com.humic.android.homecare.activity.user.CurrentUserActivity.userName;
import static com.humic.android.homecare.utils.SharedPreference.SHARED_PREFS_TOKEN;
import static com.humic.android.homecare.utils.SharedPreference.SHARED_PREFS_USER;

public class HomeFragment extends Fragment {

    String nameCache,tokenCache;
    TextView UserName;

    RecyclerView ServiceRecyclerView;
    RecyclerViewServiceAdapter ServiceAdapter;

    List<Service> ServiceList;

    Context ServiceContext;
    ApiInterface ServiceApiService;

    public View onCreateView(@NonNull LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_home,container,false);

        ServiceContext = getContext();
        ServiceApiService = apiclient.getAPIService();

        initComponents(root);

        return root;
    }

    @Override
    public void onViewCreated(@NonNull View view,@Nullable Bundle savedInstanceState) {
        super.onViewCreated(view,savedInstanceState);

        ServiceRecyclerView = (RecyclerView) getView().findViewById(R.id.list_home_service);
        ServiceAdapter = new RecyclerViewServiceAdapter(getActivity(),ServiceList);
        ServiceRecyclerView.setLayoutManager(new linearlayoutmanager(getActivity()));
    }

    private void requestServices() {
        ServiceApiService.getAllServicesUserRequest("Bearer " + loadToken()).enqueue(new Callback<ServiceResponse>() {
            @Override
            public void onResponse(Call<ServiceResponse> call,Response<ServiceResponse> response) {
                if (response.isSuccessful()){
                    Log.i("debug","onResponse: Berhasil");
                    try {
                        ServiceResponse jsonResponse = response.body();
                        JSONObject jsonRESULTS = new JSONObject(jsonResponse.toString());
                        if (jsonRESULTS.getJSONObject("Meta").getString("status").equals("success")){
//                            ServiceList = new ArrayList<>(jsonResponse.getServiceResponse());

                            ServiceList = jsonResponse.getServiceResponse();

                            ServiceRecyclerView.setAdapter(ServiceAdapter);
                        } else {
                            String error_message = jsonRESULTS.getString("error_msg");
                            Toast.makeText(ServiceContext,error_message,Toast.LENGTH_SHORT).show();
                        }
                    } catch (JSONException | IOException e) { //Error di sini
                        e.printstacktrace();
                    }
                } else {
                    Log.i("debug","onResponse: Tidak Berhasil");
                }
            }

            @Override
            public void onFailure(Call<ServiceResponse> call,Throwable t) {
                Log.e("debug","onFailure: ERROR > " + t.getMessage());
                Toast.makeText(ServiceContext,"Koneksi Internet Bermasalah",Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void initComponents(View root){
        getViewId(root);

        UserName.setText(loadCurrentUserName());

        Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
        CollapsingToolbarLayout toolBarLayout = (CollapsingToolbarLayout) getActivity().findViewById(R.id.toolbar_layout);
    }

    private void getViewId(View root){
        UserName = root.findViewById(R.id.user_name);
    }

    private String loadToken(){
        final SharedPreferences sharedPreferences = getActivity().getSharedPreferences(SHARED_PREFS_TOKEN,MODE_PRIVATE);

        tokenCache = sharedPreferences.getString(userToken,"");
        return tokenCache;
    }

    private String loadCurrentUserName(){
        final SharedPreferences sharedPreferences = getActivity().getSharedPreferences(SHARED_PREFS_USER,MODE_PRIVATE);

        nameCache = sharedPreferences.getString(userName,"");
        return nameCache;
    }

}
                                                                                     ^

这是我朋友的 JSON 响应

{
    "Meta": {
        "code": 200,"status": "success","message": "successfully load data"
    },"data": [
        {
            "id": 1,"name": "Pemasangan infus","information": "pemasangan kateter untuk kegiatan medis","image": "https://via.placeholder.com/300","price": 120000,"created_at": "2021-07-29T01:35:43.000000Z","updated_at": "2021-07-29T01:35:43.000000Z"
        },{
            "id": 2,"information": "pemasangan infus untuk kegiatan medis","price": 80000,{
            "id": 3,"name": "Perawatan luka jahitan","information": "perawatan luka pasca operasi,umumnya luka jahitan","price": 70000,{
            "id": 4,"name": "suntik vaksin titan","information": "melakukan suntik untuk mendapatkan kekuatan titan,kekuatan titan yang dihasilkan bersifat acak.","image": "http://149.28.136.231/storage/services/Titan_injection_(Anime).webp","created_at": "2021-07-29T04:11:43.000000Z","updated_at": "2021-07-29T10:17:05.000000Z"
        }
    ]
}

这是我的Service.java

package com.humic.android.homecare.model;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.Serializedname;

public class Service {

    @Serializedname("id")
    @Expose
    private int id;
    @Serializedname("name")
    @Expose
    private String name;
    @Serializedname("information")
    @Expose
    private String information ;
    @Serializedname("image")
    @Expose
    private String image ;
    @Serializedname("price")
    @Expose
    private int price ;

    public Service() {}

    public Service(int Id,String Name,String information,String Image,int Price) {
        this.id = Id;
        this.name = Name;
        this.information = information;
        this.image = Image;
        this.price = Price;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getinformation() {
        return information;
    }

    public String getimage() {
        return image;
    }

    public int getPrice() {
        return price;
    }

    public void setId(int Id) {
        this.id = Id;
    }

    public void setName(String Name) {
        this.name = Name;
    }

    public void setinformation(String information) {
        this.information = information;
    }

    public void setimage(String Image) {
        this.image = Image;
    }

    public void setPrice(int Price) {
        this.price = Price;
    }

}

这是我的ServiceResponse.java

package com.humic.android.homecare.rest.service;

import com.google.gson.annotations.Serializedname;
import com.humic.android.homecare.model.Service;

import java.util.ArrayList;

public class ServiceResponse {

    @Serializedname("data")
    ArrayList<Service> ServiceResponse;

    public ArrayList<Service> getServiceResponse() {
        return ServiceResponse;
    }

    public void setServiceResponse(ArrayList<Service> ServiceResponse) {
        this.ServiceResponse = ServiceResponse;
    }
}

这是我的RecyclerViewServiceAdapter.java

package com.humic.android.homecare.adapter;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import com.humic.android.homecare.R;
import com.humic.android.homecare.activity.user.ServiceActivity;
import com.humic.android.homecare.model.Service;

import org.jetbrains.annotations.NotNull;

import java.util.List;

public class RecyclerViewServiceAdapter extends RecyclerView.Adapter<RecyclerViewServiceAdapter.ServiceViewHolder> {

    private Context serviceContext ;
    private List<Service> serviceData ;


    public RecyclerViewServiceAdapter(Context serviceContext,List<Service> serviceData) {
        this.serviceContext = serviceContext;
        this.serviceData = serviceData;

    }

    @NotNull
    @Override
    public ServiceViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {

        View view ;
        LayoutInflater mInflater = LayoutInflater.from(serviceContext);
        view = mInflater.inflate(R.layout.item_home_service,parent,false);
        return new ServiceViewHolder(view);

    }

    @Override
    public void onBindViewHolder(ServiceViewHolder holder,final int position) {

        holder.serviceName.setText(serviceData.get(position).getName());
//        holder.serviceThumbnail.setimageResource(serviceData.get(position).getimage());
        holder.serviceCardView.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(serviceContext,ServiceActivity.class);

                intent.putExtra("name",serviceData.get(position).getName());
                intent.putExtra("information",serviceData.get(position).getinformation());
                intent.putExtra("price",serviceData.get(position).getPrice());
//                intent.putExtra("image",serviceData.get(position).getimage());

                serviceContext.startActivity(intent);

            }

        });

    }

    @Override
    public int getItemCount() {
        return serviceData.size();
    }

    public static class ServiceViewHolder extends RecyclerView.ViewHolder {

        TextView serviceName;
//        ImageView serviceImage;
        CardView serviceCardView ;

        public ServiceViewHolder(View itemView) {
            super(itemView);

            serviceName = (TextView) itemView.findViewById(R.id.list_home_service_title) ;
//            serviceImage = (ImageView) itemView.findViewById(R.id.list_home_service_thumbnail);
            serviceCardView = (CardView) itemView.findViewById(R.id.list_home_service_cardview);

        }

    }

}

这是我的ApiInterface.java

package com.humic.android.homecare.rest;

import com.humic.android.homecare.model.Service;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface ApiInterface {
// Services
    @GET("services")
    Call<Service> getAllServicesUserRequest(@Header("Authorization") String token);
}

解决方法

您的 getAllServicesUserRequest 的签名不正确。根据提供的 json,它应该接收 ServiceResponse,同样,当您将调用排入队列时,您也在那里定义了您期望的 ServiceResponse。因此,将 getAllServicesUserRequest 的签名更新为 Call<ServiceResponse> 应该可以解决您的问题:

@GET("services")
Call<ServiceResponse> getAllServicesUserRequest(@Header("Authorization") String token);

android – CookieManager中的多个cookie

android – CookieManager中的多个cookie

让我们准备cookie存储:

CookieSyncManager.createInstance(getApplicationContext());
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);

然后我手动添加一些饼干,让我们说PHPSESSID和RANDOM

CookieManager.getInstance().setCookie("domain.com", "PHPSESSID="+PHPSession);
CookieManager.getInstance().setCookie("domain.com", "RANDOM="+random);

让我们检查是否正常使用:

CookieManager.getInstance().getCookie("domain.com");

得到了

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; RANDOM=266284790:1466147978:c91d0896bac59e0b

一切看起来都不错,但是当我在应用程序中导航到WebView活动之一时,它们打开相同的域名网站也设置了cookie,那么当我打印上面的cookie时,它看起来像这样:

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=266284790:1466147978:c91d0896bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123

重复的条目……之后我再次手动设置,例如使用setCookie的随机数:

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; 
RANDOM=111111111:2222222222:33333336bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243; 
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123

WebView设置的值不会被覆盖,只有我的“手动”输入…如何强制WebView使用我之前设置的cookie或覆盖已设置?

解决方法:

与在the MDN docs about Set-Cookie中一样,您可以看到许多不同类型的cookie值,可以将cookie设置为特定的Path

cookie-name=cookie-value; Path=path-value

在CookieManager.setCookie void setCookie(String url,String value)中,android reference说:

Sets a cookie for the given URL. Any existing cookie with the same host, path and name will be replaced with the new cookie. The cookie being set will be ignored if it is expired.

在我看来,你有重复条目的原因是因为cookie值在不同的路径中.因此,如果要覆盖,则应确保主机路径名相同.

android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()

android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()

我正在通过facebook实现登录并使用SDK 4.1.0获取用户电子邮件ID,如 facebook documentation所示,但问题是每次在onActivityResult之后调用registerCallback时,调用而不是onSuccess onCancel.

package com.dexterous.hellologin;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBaractivity;
import android.util.Log;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;


public class MainActivity2 extends ActionBaractivity {

CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

    setContentView(R.layout.activity_main_activity2);

    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");
    // If using in a fragment
    //   loginButton.setFragment(this);
    // Other app specific specialization
    // Callback registration
        loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Log.e("TAG","success");
        }

        @Override
        public void onCancel() {
            // App code
            Log.e("TAG","onCancel");
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.e("TAG","error");
        }
    });
}

@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
    super.onActivityResult(requestCode,resultCode,data);
    callbackManager.onActivityResult(requestCode,data);
    Log.e("TAG","onActivityResult");
   }
}

每次我得到输出

onActivityResult

onCancel

我没有得到包含按钮取消和登录的facebook登录屏幕.

卸载Facebook应用程序从移动设备错误更改为无效的应用程序ID

这是堆栈跟踪

06-04 10:55:16.631 19864-19864/com.dexterous.hellologin I/WebViewFactory﹕ Loading com.google.android.webview version 42.0.2311.138 (code 2311138)
06-04 10:55:16.706 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Time to load native libraries: 4 ms (timestamps 8772-8776)
06-04 10:55:16.706 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Expected native library version number “”,actual native library version number “”
06-04 10:55:16.717 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:16.816 19864-19864/com.dexterous.hellologin V/WebViewChromiumFactoryProvider﹕ Binding Chromium to main looper Looper (main,tid 1) {28a6fbd9}
06-04 10:55:16.816 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Expected native library version number “”,actual native library version number “”
06-04 10:55:16.819 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0,default verbosity = 0
06-04 10:55:16.834 19864-19864/com.dexterous.hellologin I/browserStartupController﹕ Initializing chromium process,singleProcess=true
06-04 10:55:16.838 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:16.841 19864-19864/com.dexterous.hellologin E/SysUtils﹕ ApplicationContext is null in ApplicationStatus
06-04 10:55:16.869 19864-19864/com.dexterous.hellologin W/chromium﹕ [WARNING:resource_bundle.cc(286)] locale_file_path.empty()
06-04 10:55:16.870 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful,fd=63 off=46992 len=3337
06-04 10:55:16.871 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:aw_browser_main_parts.cc(76)] Loading webviewchromium.pak from,fd:64 off:7953032 len:1161174
06-04 10:55:17.024 19864-19953/com.dexterous.hellologin W/chromium﹕ [WARNING:data_reduction_proxy_config.cc(150)] SPDY proxy OFF at startup
06-04 10:55:17.047 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:17.060 19864-19864/com.dexterous.hellologin W/AwContents﹕ onDetachedFromWindow called when already detached. Ignoring
06-04 10:55:24.893 19864-19864/com.dexterous.hellologin W/BindingManager﹕ Cannot call determinedVisibility() – never saw a connection for the pid: 19864
06-04 10:55:26.140 19864-20020/com.dexterous.hellologin E/Adreno-ES20﹕ : Invalid texture format! Returning error!
06-04 10:55:26.140 19864-20020/com.dexterous.hellologin E/Adreno-ES20﹕ : Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
06-04 10:55:26.198 19864-19912/com.dexterous.hellologin E/Adreno-ES20﹕ : Invalid texture format! Returning error!
06-04 10:55:26.198 19864-19912/com.dexterous.hellologin E/Adreno-ES20﹕ : Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
06-04 10:58:32.287 19864-19864/com.dexterous.hellologin E/TAG﹕ onCancel
06-04 10:58:32.287 19864-19864/com.dexterous.hellologin E/TAG﹕ onActivityResult
06-04 10:59:25.498 19864-19864/com.dexterous.hellologin I/art﹕ Explicit concurrent mark sweep GC freed 16056(1325KB) AllocSpace objects,0(0B) LOS objects,39% free,9MB/16MB,paused 856us total 79.028ms

表现
    
    

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

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

    <activity
        android:name="com.dexterous.hellologin.MainActivity2"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main_activity2" >
    </activity>

    <Meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="1437829111203883" />

</application>

</manifest>

解决方法

Problem is here that you are using Facebook APPId directly and You should use Like this

<Meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/app_id" />

In sting xml

<string name="app_id">1437829111203883 </string>

今天关于android – 如何使用“CookieManager :: removeAllCookies(ValueCallback callback)”android app cookie的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android Facebook SDK-authorizeCallback()问题、Android Retrofit RecyclerView 错误:类型不兼容:> 无法转换为 Callback、android – CookieManager中的多个cookie、android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()的相关知识,请在本站搜索。

本文标签: