在我的Java代码中,它正在检查!null
条件并抛出一个Exception
.
例如
try
{
if (stud.getCall() != null)
acc.Call = stud.getCall().toString();
else
throw new Exception("Data is null");
}
catch (Exception e)
{
logger.error("Some Error" + e.getMessage());
throw new Exception("Please check the Manatadatory Field is Missing" + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
但在我得到的日志中:
Some Error null
Run Code Online (Sandbox Code Playgroud)
为什么e.getMessage
null
?
我有一个查询MediaStore图像的类.例如,我的代码看起来像someContentResolver.query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, ... )
.我想测试一下,我对MediaStore的查询是正确的.
到目前为止,我在测试中所做的是:
ContentResolver resolver = new Activity().getContentResolver();
ContentValues values = new ContentValues();
values.put( MediaStore.Images.Media.DATA,
"/fake/path/file1.jpg" );
values.put( MediaStore.Images.Media.DATE_ADDED,
fakeTime.getTime() );
resolver.insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values );
Run Code Online (Sandbox Code Playgroud)
我将这个解析器注入到我的类中,该类对它执行查询.但是,查询返回null.我看到这篇文章:http: //ikaruga2.wordpress.com/2013/07/29/roboelectric-and-contentresolverscontentproviders/ 表示使用ShadowContentResolver注册内容提供者,所以,如下所示:
ShadowContentResolver.registerProvider( MediaStore.AUTHORITY, <SOMETHING_GOES_HERE> );
Run Code Online (Sandbox Code Playgroud)
但我不知道该为内容提供商提供什么.也许用一个MediaStore
对象?不,它不是ContentProvider
.也许是这样MediaProvider
?由于某种原因,该符号无法解析.
在这一点上,我严重怀疑这是远程正确的方法.有人能引导我朝着正确的方向前进吗?
使用Robolectric 2.4快照和API 19.
android android-contentresolver android-contentprovider robolectric
我的foo.bat文件:
exit /b 1
Run Code Online (Sandbox Code Playgroud)
我在cmd提示符下执行的操作:
foo.bat && echo "OK"
Run Code Online (Sandbox Code Playgroud)
结果:
exit /b 1
"OK"
Run Code Online (Sandbox Code Playgroud)
但是,当我使用双管道时,回声不会发生:
foo.bat || echo "OK"
Run Code Online (Sandbox Code Playgroud)
结果:
exit /b 1
Run Code Online (Sandbox Code Playgroud)
这与我期望的&&和||完全相反。去做。请参阅https://ss64.com/nt/call.html,其中显示:
commandA && commandB运行commandA,如果成功,则运行commandB
和
commandA || commandB运行commandA,如果失败,则运行commandB
我失去理智了吗?我在这里想念什么?
我有一个交叉编译器cmake项目,该项目依赖于恰好也使用cmake的独立项目中的库:
/myProject/CMakeLists.txt (uses cross-compiler)
/anotherProject/CMakeLists.txt (platform-agnostic)
Run Code Online (Sandbox Code Playgroud)
anotherProject可以完全单独构建。它根本不了解myProject。
现在,anotherProject有很多我需要的模块,例如:
anotherProject/A/CMakeLists.txt (produces static lib A.a)
anotherProject/B/CMakeLists.txt (produces static lib B.a)
etc
Run Code Online (Sandbox Code Playgroud)
构建myProject时,我想构建并链接到anotherProject / A和anotherProject / B,以生成共享库myproject.so。如果可能,我想利用anotherProject的现有cmake-ness,而不是从myProject手动获取其各种源集。
用cmake实现此目的的正确方法是什么?我觉得我缺少明显的东西。
例如,如果myProject只是anotherProject下的子目录,或者如果存在可以同时引用myProject和anotherProject的顶级CMakeLists.txt,这将很简单。但是我追求的都不是。我知道我可以构建另一个项目并将其库导出到一个众所周知的位置,然后从myProject引用导出目录-但我也想避免这种设置。
我正在使用 cmake 生成一个 Visual Studio 项目。
假设我需要使用以下 Microsoft 特定的库和标头:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\VS\UnitTest\lib\x64\Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib
)c:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\crtdbg.h
)我不想将这些路径硬编码到我的 CMakeLists.txt 中,也不想强制开发人员在构建过程中传入路径。
我希望能够做这样的事情:
# 1. get include paths somehow
# 2. get lib paths somehow
include_directories(
${MSVS_UnitTest_INCLUDE_DIR}
${Windows_SDK_INCLUDE_DIR}/ucrt
)
link_directories(
${MSVS_UnitTest_LIBRARIES_DIR}/x64
${Windows_SDK_LIBRARIES_DIR}/ucrt/x64
)
add_library(MyTest mytest.cpp)
target_link_libraries(MyTest
libucrt
Microsoft.VisualStudio.TestTools.CppUnitTestFramework
)
Run Code Online (Sandbox Code Playgroud)
做#1 和#2 的正确方法是什么?
我将launchMode设置为singleTask的活动:
<activity
android:name="com.blah.blah.MyActivity"
android:launchMode="singleTask">
</activity>
Run Code Online (Sandbox Code Playgroud)
我有一个PendingIntent持续通知,启动该活动:
Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent = stackBuilder.getPendingIntent( REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
...
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );
Run Code Online (Sandbox Code Playgroud)
当我与现有的MyActivity交互时,我点击Home并通过启动器重新启动MyActivity,MyActivity onNewIntent()
会按预期调用.
问题是当我与现有的MyActivity交互时,我点击正在进行的通知时,会创建一个新的MyActivity onCreate()
,现有的MyActivity将被销毁onDestroy()
.我预计onNewIntent()
会调用MyActivity .为什么不这样呢?
我试过这些答案没有成功:
我正在使用NotificationCompat.Builder来创建通知:
Intent activityIntent = new Intent( this,
MyActivity.class );
PendingIntent resultingActivityPendingIntent = getPendingIntent( activityIntent );
// create notification for foreground service
m_notificationBuilder = new NotificationCompat.Builder( this );
m_notificationBuilder.setSmallIcon( R.mipmap.ic_launcher );
m_notificationBuilder.setTicker( "some text" );
m_notificationBuilder.setContentTitle( "some text" ) );
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );
Run Code Online (Sandbox Code Playgroud)
通知在状态栏和通知下拉列表中按预期运行,但对于锁屏,它显示如下:
com.myname.mypackage
Contents hidden
Run Code Online (Sandbox Code Playgroud)
如何更改包名称所在的行?
我已尝试在通知构建器中设置内容文本和内容信息,但它不会更改任何内容.
必须有一些显而易见的东西,因为其他应用程序,即使其内容被隐藏,也会有相关内容,例如:
USB connectivity
Contents hidden
Run Code Online (Sandbox Code Playgroud)
我正在使用SDK 19,构建工具19,目标19,min SDK 11.
android ×3
c++ ×2
cmake ×2
batch-file ×1
cmd ×1
exception ×1
java ×1
launchmode ×1
robolectric ×1