例如,我尝试直接在外部存储目录中下载一个大的 zip 文件
"/mnt/sdcard/Android/data/com.vexdev.audioguida.app/files/data"
Run Code Online (Sandbox Code Playgroud)
我想我应该使用
DownloadManager.Request.setDestinationInExternalPublicDir(path, fileName)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何为其提供在不同 Android 设备上一致的路径。
而且我还试图获取稍后访问该文件的路径,如下所示:
File file = new File(path + fileName);
Run Code Online (Sandbox Code Playgroud)
我在这里问是因为我知道这两种方法需要不同的根路径,因为我试图提供这样的路径:
Application.getAppContext().getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
但 DownloadManager 并未将文件放在 File 构造函数稍后搜索的位置。(实际上它下载到了错误的目录中!)
我正在寻找一种方法将这些文件直接下载到正确的目录中,而无需移动它们。
我想使用命令行Gradle的属性注入来传递一个数组,这可能吗?
像这样的东西:
gradle build -PmyProp=['value1','value2','value3']
Run Code Online (Sandbox Code Playgroud)
并像往常一样访问它:
if(project.hasProperty('myProp')) {
for ( prop in myProp ) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我在使用 Glassfish 3.1.2 + JPA + EclipseLink + MySQL 开发的应用程序上遇到了问题,在我部署应用程序后(DB 上没有表)它运行得很好,显然执行了唯一的查询(表中的实体计数)我输入的。但是如果我重新加载页面,再次调用 servlet 会导致抛出异常:TransactionRolledbackLocalException
显然与用于计算实体的方法相同。
然后如果我再次重新加载,它运行得很好,然后再次异常,很好,异常等等......
这是我的 servlet:
@WebServlet(name="Controller", urlPatterns={"/Controller"})
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB WineDao _wines;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
_wines.countWines();
RequestDispatcher view = request.getRequestDispatcher("ShowAll.jsp");
view.forward(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
这是 WineDao:
@Stateless
public class WineDao {
@PersistenceContext private EntityManager em;
public Long countWines() {
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(Wine.class)));
return em.createQuery(cq).getSingleResult(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试从IntentService发送广播到启动它的活动,这是我在活动中注册Receiver的方式:
private BroadcastReceiver mInitializer;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
mInitializer = new InitializationReceiver();
IntentFilter initializer = new IntentFilter();
initializer.addAction(IntentConstants.Tasks.INITIALIZE);
initializer.addAction(IntentConstants.Initialization.INITIALIZE_IS_FIRST_START);
initializer.addAction("test");
registerReceiver(mInitializer, initializer);
....
}
private class InitializationReceiver extends BroadcastReceiver {
private InitializationReceiver() {
if(D) Log.d(TAG, "Instantiated InitializationReceiver");
}
@Override
public void onReceive(Context context, Intent intent) {
if(D) Log.d(TAG, "Received broadcast, intentAction: "+intent.getAction());
if(intent.getAction().equals(IntentConstants.Tasks.INITIALIZE)) {
if(D) Log.d(TAG, "Received Initialize Intent");
}
if(intent.getAction().equals(IntentConstants.Initialization.INITIALIZE_IS_FIRST_START)) {
if(D) Log.d(TAG, "Received First Start Intent");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我从IntentService发送广播的方式:
if(D) Log.d(TAG, "Got here");
Intent …Run Code Online (Sandbox Code Playgroud) 有一种方法可以使用Atmosphere Framework的AtmosphereResource或WebSocket访问客户端的IP吗?
android ×2
atmosphere ×1
eclipselink ×1
ejb ×1
glassfish ×1
gradle ×1
groovy ×1
ip ×1
jakarta-ee ×1
java ×1
java-ee ×1
path ×1
websocket ×1