我正在尝试将Facebook集成到我的Android应用程序中.使用Facebook登录按钮,我尝试登录.当我第一次安装应用程序时,它工作正常并成功登录.当我使用该按钮注销,然后再次尝试登录时,它会显示权限对话框,但SessionState返回状态已关闭.有什么建议?这是我的代码
public class LoginActivity extends FragmentActivity{
// private Login login;
private boolean isResumed = false;
private BirthDayComp app;
private int Login=0;
private int LogOut=1;
private int Count=LogOut+1;
private boolean loged= false;
private Fragment[] fragments = new Fragment[Count];
private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_fragment);
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
FragmentManager fm …Run Code Online (Sandbox Code Playgroud) android facebook facebook-graph-api facebook-android-sdk android-facebook
我以前曾经问过这个问题.由于我在java和android的新手技巧.一个多星期以来,我无法解决这个问题.
我的一个朋友和我正在开发一个Android项目是有这样的事情.
这件事最奇怪的部分是,它发生在我从谷歌游戏商店下载和测试时.不是从本地android studio安装或调试模式.
这可能是什么问题,或者这个完全错误的返回列表?我的朋友说服这段代码正确返回但是从Play商店安装它始终是一个错误.
请建议我在哪里继续挖掘?
@Override
public void promiseMethod(JSONObject object) {
if (object != null) {
if (object.has(DO_SERVICES)) {
vehicleDetails = new ArrayList < Object[] > (1);
List < String > vehicleNoList = new ArrayList < String > (1);
List < String > serviceList = new ArrayList < String > (1);
try {
Gson gson = new Gson();
JSONObject jsonObj = new JSONObject(object.get(DO_SERVICES)
.toString());
servDto = gson.fromJson(jsonObj.toString(),
ServiceDto.class);
if (servDto.getServiceDto() instanceof List) {
List < DoServiceDto > doServiceList = …Run Code Online (Sandbox Code Playgroud) 我正在使用Retrofit 2制作一个Android应用程序.我的REST Api都是用Liferay编写的.现在在Liferay中,我所看到的是,访问我们需要首先进行身份验证的Web服务.所以我已经这样认证了
http://test:q1w2e3r4@192.168.0.110:8080/liferay-portlet/api/secure/jsonws/
Run Code Online (Sandbox Code Playgroud)
Liferay有自己的用户身份验证方法,我们已经覆盖了.我检查了Postman的Web服务调用工作正常.
URL:http://test:q1w2e3r4@192.168.0.110:8080/liferay-portlet/api/secure/jsonws/customuserauthentication/authenticate-by-user-name
Run Code Online (Sandbox Code Playgroud)
形式编码的值
companyId:10154
screenName:xyz
password:xyz
active:true
Run Code Online (Sandbox Code Playgroud)
如果我把它放在邮递员中,它会正确地获取json响应.
现在,当我从我的Android代码中调用相同的内容时,我得到一个响应"未经授权".
我的改造服务
public interface LoginApi {
@FormUrlEncoded
@POST("/liferay-portlet/api/secure/jsonws/customuserauthentication/authenticate-by-user-name")
Call<User> login(@Field("companyId")long companyId,@Field("screenName")String screenName,@Field("password")String password,@Field("active")boolean active);
}
Run Code Online (Sandbox Code Playgroud)
我的RestApiManager类(此类用于调用服务接口并创建改造构建器)
public class RestApiManager {
private LoginApi loginApi;
public LoginApi login() {
if (loginApi==null) {
GsonBuilder gson=new GsonBuilder();
gson.registerTypeAdapter(String.class, new StringDeserializer());
Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://test:q1w2e3r4@192.168.0.110:8080")
.addConverterFactory(GsonConverterFactory.create())
.build();
loginApi=retrofit.create(LoginApi.class);
}
return loginApi;
}
Run Code Online (Sandbox Code Playgroud)
调用RestApiManager
Call<User> callUser=restApiManager.login().login(loginData.getCompanyId(),loginData.getScreenName(),loginData.getPassword(),loginData.isActive());
callUser.enqueue(new Callback<User>() {
@Override
public void onResponse(Response<User> response, Retrofit retrofit) {
Log.d("Login","Login Response:"+response.body());
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我在清单中使用了android:windowSoftInputMode ="adjustResize"来防止键盘隐藏活动按钮.它可以工作,但是当键盘打开时,我的按钮会向上移动.它有点跳跃,我想知道 - 我可以有任何动画来顺利过渡吗?
<activity
android:name=".Activity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
</activity>
Run Code Online (Sandbox Code Playgroud) 我有一个DialogFragment,我show()当用户点击我的应用程序的按钮.
我想设置一个动画,以便DialogFragment在它启动时进行Z-axix旋转(即3d卡翻转动画).
当显示时,我成功地使用了windowAnimationStyle以下样式来执行简单的动画(使用View Animation框架)DialogFragment:
<style name="windowAnimationCardFlip" parent="@android:style/Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/card_flip_left_in</item>
<item name="android:windowExitAnimation">@anim/card_flip_left_out</item>
</style>
Run Code Online (Sandbox Code Playgroud)
问题是View Animation框架(据我所知)非常有限,而且我能做的唯一旋转(至少在xml上)是2D XY旋转(我想要一个"3D" "z轴旋转).
我尝试使用Property Animation框架(特别是一个用XML编写的Object Animator),但是,虽然我能够在加载简单时实现效果,Fragments如官方android教程中所述,当我尝试将该XML ObjectAnimator应用于windowEnterAnimation属性,没有任何反应.
那么,我想知道会发生什么?是否可以使用ObjectAnimator为windowEntry事件设置动画?如果没有,还有其他解决方案吗?
我正在尝试使用com.squareup.okhttp中的OkHttpClient从API返回一些数据.我遇到了一些我最终能够克服的错误,但是我无法通过这个主机异常错误,这里的任何内容似乎都不足以让我的情况能够解决.
下面是我尝试的代码以及它的输出,如果有人知道如何克服错误我会很感激.
码
public void connect() {
OkHttpClient client = new OkHttpClient();
com.squareup.okhttp.Request request = new com.squareup.okhttp.Request.Builder()
.url("https://socialweb-analytics.lcloud.com/api/public/reports/jobs?companyKey=ato")
.get()
.addHeader("authorization", "Basic c2RidXNpbmVzc2FuYWx5dGljc0BhdG8uZ292LmF1OkFuYWx5dGljezEh")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "65ef5553-77b5-053f-9c01-4fdf76bdc92f")
.build();
System.out.println(request.toString());
try {
Response response = client.newCall(request).execute();
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT
Request{method=GET, url=https://socialweb-analytics.lcloud.com/api/public/reports/jobs?companyKey=ato, tag=null}
java.net.UnknownHostException: socialweb-analytics.lcloud.com: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:922)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1314)
at java.net.InetAddress.getAllByName0(InetAddress.java:1267)
at java.net.InetAddress.getAllByName(InetAddress.java:1183)
at java.net.InetAddress.getAllByName(InetAddress.java:1119)
at com.squareup.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.squareup.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.squareup.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.squareup.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.squareup.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:344)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:327)
at …Run Code Online (Sandbox Code Playgroud) 我想使用Picasso来检索Bitmap图像以用作标记图标,但我不知道该怎么做.如果我使用Picasso将图像插入图像视图,我知道我可以使用:
Picasso.with(MainActivity.this).load(URL).into(photo_imageview);
Run Code Online (Sandbox Code Playgroud)
当然,如果我把它传递给它,这将不起作用 .icon()
有没有一种简单的方法来实现这一目标?
感谢有人看看这个!
Activity/Fragment当我从服务器得到响应时,我正在使用EventBus通知.到目前为止一切都运行良好,但是当我在同一个Fragment或两个网络中使用两个网络呼叫时会出现问题Activity.问题是onEvent(String response)从服务器获取两个响应的相同方法.反应call 1不同于call 2.
我提出了一个解决方案 - 我添加CallType了NetworkReqest但我无法通知活动/片段有关网络调用,因为post()只需要一个参数.
这是相关的代码 -
public class NetworkRequest {
EventBus eventBus = EventBus.getDefault();
public void stringParamRequest(String url, final Map<String, String> params,String callType) {
StringRequest jsonObjRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
eventBus.post(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("volley", "Error: " + error.getMessage());
eventBus.post(error);
}
}) { …Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用okhttp Retrofit来发出网络请求.在其中一个请求中,我收到此错误:
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT但在第1行第1行为STRING路径$
我在日志中看到201响应,但Retrofit会抛出此错误.以下是我的代码.
signup(signupParams, new Callback<Member>() {
@Override
public void success(Member member, Response response) {
if (member != null) {
UserAccount userAccount = new UserAccount(member);
userAccount.save();
}
@Override
public void failure(RetrofitError re) {
BusProvider.post(new SignupFailedEvent(re, email));
}
});
Run Code Online (Sandbox Code Playgroud)
signupParams值是 -
{"emailAddress":"test@gmail.com","password":"tester123","userSource":"APH"}
Run Code Online (Sandbox Code Playgroud)
我用jsonLint测试了这个json,它是一个有效的json.这是我的会员类,理想情况下应该是回应.
public class Member {
public String emailAddress;
public String token;
public long id;
public String firstName;
public String lastName;
}
Run Code Online (Sandbox Code Playgroud)
响应的示例应该是这样的:
{
"emailAddress": "test@gmail.com",
"id": 1437811,
"token": "sdhshdghsdhhsdbcjhbsjdhc",
"firstName": "John",
"lastName": "Smith"
}
Run Code Online (Sandbox Code Playgroud) 我可以将C++库包装到Adobe Air原生扩展IOS/Android吗?
我有一个由第三方编写的C++库.我想将该库用于移动设备的adobe air原生扩展?我能做到吗?如果是这样,我在哪里可以找到一些准则?