我正在将我的Facebook SDK升级到最新版本.下面的代码从Facebook自己的例子中逐行提升,可以在这里找到:https://developers.facebook.com/docs/facebook-login/android/v2.3
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import java.util.Arrays;
public class TestFb extends FragmentActivity{
CallbackManager callbackManager;
FacebookController fbController;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fbController = FacebookController.getInstance(this);
FacebookSdk.sdkInitialize(getApplicationContext());
final LoginManager loginManager = LoginManager.getInstance();
callbackManager = CallbackManager.Factory.create();
loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String userId = loginResult.getAccessToken().getUserId();
String token = loginResult.getAccessToken().getToken();
Log.d("fb", "ID: " + userId + …Run Code Online (Sandbox Code Playgroud) 我有一个名为Common的库项目,我将其用于我的其他项目Consumer和Management共享的功能.消费者本身也是其他应用程序使用的库项目.
Common中的build.gradle文件包含其他项目使用的所有外部依赖项,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.2.2'
compile 'com.android.support:support-v4:22.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
}
Run Code Online (Sandbox Code Playgroud)
这将下载以下库:
当我将Common添加到Consumer,Management或两者时,此列表保持不变.当我将Consumer添加到MyApp时,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':consumer')
}
Run Code Online (Sandbox Code Playgroud)
有时候是这样的:
支持库刚刚消失,在我的项目中造成了彻底的破坏.这在更新到Android Studio 1.3.1之前没有发生,所以我真的想知道问题可能是什么.
作为参考,这些是完整的gradle.build文件:
共同
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.2.2'
compile 'com.android.support:support-v4:22.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
} …Run Code Online (Sandbox Code Playgroud) 我想更好地控制向我的用户显示哪些通知,并有选择地使其中的一些静音.为了做到这一点,我UNNotificationServiceExtension在我的应用程序中实现了一个,即使我的应用程序没有运行,它也允许我拦截和修改通知.但问题是,即使我不打电话didReceive(_:withContentHandler:),系统仍会在大约30秒后显示远程通知.我怎样才能防止这种情况发生?
我在一个文件夹中有一些(38000)图片/视频文件.其中大约40%是重复的,我试图摆脱它.我的问题是,如何判断2个文件是否相同?到目前为止,我尝试使用文件的SHA1但事实证明许多重复文件有不同的哈希值.这是我使用的代码:
public static String getHash(File doc) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA1");
FileInputStream inStream = new FileInputStream(doc);
DigestInputStream dis = new DigestInputStream(inStream, md);
BufferedInputStream bis = new BufferedInputStream(dis);
while (true) {
int b = bis.read();
if (b == -1)
break;
}
inStream.close();
dis.close();
bis.close();
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
BigInteger bi = new BigInteger(md.digest());
return bi.toString(16);
}
Run Code Online (Sandbox Code Playgroud)
我能以任何方式修改吗?或者我必须使用不同的方法吗?
我正在使用Text对象填充ComboBox.使用Text对象而不是Strings允许我添加一个id值,我可以在我的程序中使用它,并在我决定国际化UI时使用.无论如何,这就是我正在做的事情:主要课程:
public class MainApp extends Application {
private Stage primaryStage;
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
try {
AnchorPane paneMain = (AnchorPane) FXMLLoader.load(getClass().getResource("Test.fxml"));
Scene scene = new Scene(paneMain);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
Run Code Online (Sandbox Code Playgroud)
}
控制器:
public class Test implements Initializable{
@FXML
private AnchorPane anchorPane;
@FXML
private ComboBox<Text> comboTime;
private Text days;
private Text hours;
private Text minutes;
private int timeMultiplier;
public Test(){
days = …Run Code Online (Sandbox Code Playgroud) 我正在尝试播放视频,但没有运气,所以我正在测试一些简单的代码,看看问题是什么.以下不起作用,我不确定为什么:
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.videotest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.videotest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
主要活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoView vid = (VideoView) findViewById(R.id.videoView1);
Uri vidUri = Uri.parse("http://somewebsite.com/somevideo.mp4");
vid.setVideoURI(vidUri);
vid.setMediaController(new MediaController(this));
vid.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true; …Run Code Online (Sandbox Code Playgroud) 我目前正在使用此代码:
@Override
public Bitmap transform(Bitmap source) {
Bitmap result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(result);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, source.getWidth(),source.getHeight());
final RectF rectF = new RectF(rect);
final float scale = context.getResources().getDisplayMetrics().density;
final float roundDp = 10 * scale;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundDp, roundDp, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(source, rect, rect, paint);
source.recycle();
return result;
}
Run Code Online (Sandbox Code Playgroud)
但问题是这种方法只允许我一次修改所有4个角.我怎么只绕图像的底角?
键入以下代码时,我在groupingBy函数的参数上出现"循环推理"错误:
Map<String, User> mapByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail));
Run Code Online (Sandbox Code Playgroud)
我发现这令人困惑,因为以下不会导致任何问题:
users.stream().collect(Collectors.groupingBy(User::getEmail));
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
List<User> listByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail)).values().stream().reduce(null, (a,b)-> a=b);
Run Code Online (Sandbox Code Playgroud)
所以问题是,什么是循环推理,我该如何避免呢?
编辑感谢您的回答.经过进一步研究后,我发现我需要通过以下方式减少我的结果:
Map<String, User> mapByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail, Collectors.reducing(new User(),(a,b)-> a=b)));
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MyBatis在我的数据模型中映射一对多的关系.这基于以下类:
class Team{
String mId;
String mName;
List<Player> mPlayers;
}
class Player{
String mId;
String mName;
}
Run Code Online (Sandbox Code Playgroud)
我想编写一个返回匹配列表的查询,每个匹配都填充了与该匹配对应的标记.
<select id="getTeams" resultType="Team" resultMap="TeamMap">
SELECT id, name, players.id as player_id, players.name as player_name
FROM teams
JOIN players ON teams.id = players.team_id
</select>
<resultMap type="Team" id="TeamMap">
<id property="mId" column="id"/>
<result property="mName" column="name"/>
<collection property="mTags" javaType="List" ofType="Player">
<id property="player_id" column="mId"/>
<result property="player_name" column="mName"/>
</collection>
</resultMap>
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是每个Team对象只填充一个Player.如何更改此项以确保每个团队都包含属于它的所有玩家?
我有一个在线servlet,我正在尝试联系以进行一些基本的测试.这是servlet代码:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class index extends HttpServlet {
private static final long serialVersionUID = 1L;
public index() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
long time1 = System.currentTimeMillis();
long time2 = time1 + 10000;
out.println(time1);
long i = 400000000l;
while (System.currentTimeMillis() < time2) {
i++;
}
out.print(time2);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试使用以下代码从服务器获取信息:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import …Run Code Online (Sandbox Code Playgroud) 在 servlet 中,我会做
@WebServlet("/myURL")
Run Code Online (Sandbox Code Playgroud)
但是我将如何使用 JSP 页面做到这一点?
我创建了一个Foo类,如下所示:
class Foo{
var randomeVar:String?
func saySomething(){
print("Something")
}
}
Run Code Online (Sandbox Code Playgroud)
我现在要比较foo的不同实例,如下所示:
let foo1 = Foo()
let foo2 = Foo()
if foo1 == foo2{
print("Cool")
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,投诉人抱怨“二进制运算符'=='不能应用于两个'Foo'操作数”。有什么问题,我该如何解决?
我似乎无法使用RMI连接2台机器.为了确保我的代码没有问题,我复制了维基百科(http://en.wikipedia.org/wiki/Java_remote_method_invocation)中的简单示例,并编辑了代码以打印出一个简单的int.
我尝试提供所有权限并关闭所有防火墙,但仍然出现此错误:
java.rmi.ConnectException: Connection refused to host 55.229.xx.xxx; nested
exception is:java.net.ConnectException: Connection timed out: connect
Run Code Online (Sandbox Code Playgroud)
在过去的3天里我一直在努力做到这一点,我似乎仍然无法克服基本的配置问题.