是否可以使用ContactsContract获取用户经常交谈的联系人?
我知道我可以使用CallLog ContentProvider并尝试找出答案,但是我想知道是否已经有办法做到这一点。
我正在使用Android的支持库(android.support.v7)将ActionBar添加到我的应用程序(我的Activity扩展了ActionBarActivity).
我使用以下代码打开联系人选择器:
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
contactPickerIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(contactPickerIntent, 999);
Run Code Online (Sandbox Code Playgroud)
但我从未接受过onActivityResult(甚至在选择联系人之后).
我注意到我的startActivityForResult实际上是
android.support.v4.app.FragmentActivity.startActivityForResult(Intent intent, int requestCode)
Run Code Online (Sandbox Code Playgroud)
为什么我没有进入onActivityResult()?
我尝试了解使用Android应用程序下载文件的不同方法的优缺点.
我找到了几种方法:
有经验的人是否可以告诉我选择一种方式的原因?
我将以下依赖项添加到我的android项目中:
// Unit testing dependencies
androidTestCompile 'junit:junit:4.12'
// Set this dependency if you want to use Mockito
androidTestCompile 'org.mockito:mockito-core:1.10.19'
Run Code Online (Sandbox Code Playgroud)
并使用junit4 api创建一个测试(例如,Adder是一个简单的类,它总结了int):
@RunWith(MockitoJUnitRunner.class)
public class AdderTest {
@Test
public void testValidAdd() {
Adder adder = new Adder();
assertEquals(adder.add(1,1), 2);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行测试时,我得到:
运行测试测试运行已启动junit.framework.AssertionFailedError:在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:android.test.AndroidTestRunner.runTest(AndroidTestRunner.run:)上的com.test.myapp.AdderTest中找不到测试. 176)在android.app.Instrumentation的android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)$ InstrumentationThread.run(Instrumentation.java:1701)完成
有谁看到我做错了/有什么输入?
在我的Android项目中,我有一个使用Builder模式构建的RequestParams对象。
我在考虑单元测试,即通过生成的对象检索在Builder中设置的参数。
除此之外,在这样的对象中进行单元测试还有什么有趣的事情吗?
我听到并阅读了有关PSD文件的尺寸和设计Android应用程序分辨率的不同内容.不幸的是,我遇到了配置PSD文件的不同方法,我发现这令人困惑.
Android Developer网站中的这个页面说明了很多关于支持屏幕大小的内容,但没有说明如何配置PSD文件:http://developer.android.com/guide/practices/screens_support.html
所以,为了澄清这个问题,我将介绍我采取的方法,我很乐意听到有关它的评论.
我如何设置PSD:
我将PSD的尺寸设置为480x800像素(对于肖像),并根据我想要支持的当前屏幕密度设置分辨率,这意味着:
(请参阅上面有关屏幕支持的链接,了解使用这些数字的原因)
所以我要做的就是设计,我要为我的应用程序密度最高的(比方说华电国际)和出口,然后我更改分辨率的下一个较低的密度(MDPI)和出口等...
至于启动图标,规定如何在打造图标: http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html#size
我为图标找到的所有模板在PSD中使用了72像素/英寸分辨率.
编辑:
所以要明确我的问题 - 这种方法是否正确?推荐吗?
在Android文档没有说明任何有关,而MODE_MULTI_PROCESS是安全的(安全明智)与否.
那么,这样安全吗?有没有理由不使用它?
我想为ViewGroup的背景Drawable的alpha属性设置动画。
我使用view.getBackground()获得了对背景可绘制对象的引用。
然后,我使用以下代码(来自此线程):
if (backgroundDrawable.getAlpha() == 0) {
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(backgroundDrawable, PropertyValuesHolder.ofInt("alpha", 255));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
} else {
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(backgroundDrawable, PropertyValuesHolder.ofInt("alpha", 0));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
}
Run Code Online (Sandbox Code Playgroud)
但是动画总是从alpha值0开始。(意味着,当我想将动画设置为0时,它会立即消失,因为它是从0到0进行动画处理)。
有谁知道我该怎么做?
我有一个MySQL数据库,我正在使用mysqli.
由于某种原因,我无法让交易正常运作.如果我打电话$mysqli->rollback(),它不会回滚.
示例代码:
$mysqli->autocommit(false);
$sql = "INSERT INTO myTable (name , color) VALUES ('Dan' , 'red')";
$mysqli->query($sql);
$mysqli->rollback();
Run Code Online (Sandbox Code Playgroud)
结果是另一行被添加到myTable.任何人都可以想到一个原因吗?
我一直在阅读有关Android架构以及在此处和此处与Presentation,Domain和Model层分离的内容.
在这两篇文章中,它表示Domain层完全独立于Android框架:
"这个层是一个没有任何android依赖关系的纯java模块.所有外部组件在连接到业务对象时都使用接口."
但是,Android提供了许多实用程序(例如TextUtils,android.Log等...),可以/应该在所有层中使用(在我看来).
测试(使用junit)这类类需要模拟它们(意思是,使用诸如robolectric的lib).
我不理解这种模式吗?或者"独立于Android框架",他们的意思是活动,上下文,服务,BroadcastReceivers等?
假设我有一个带有"用户"节点和"宠物"节点的项目.当用户获得宠物时,我想要将宠物的密钥添加到用户的"宠物"节点,并将用户ID添加到宠物的"所有者"节点.
例:
{
"users":{
"user1":{
"pets":{
"pet1":true,
"pet3":true
}
...
}
},
"pets":{
"pet1":{
"owner":"user1",
...
},
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保两个更新都成功阻止状态不一致.
我在这里阅读了有关如何使用Firebase事务的信息,但是当我尝试创建修改相关值的事务时(使用dbRef.runTransaction(...)),我收到此DatabaseError错误:
该交易有太多的重试次数
当我在我修改的特定节点上调用runTransaction()时,事务似乎才有效(例如,调用
dbRef.child("users").child("user1").runTransaction(...));
Run Code Online (Sandbox Code Playgroud)
但是,这对我没有帮助,因为我需要联系相关用户和宠物.如何使此交易有效?