小编Luc*_*cci的帖子

DownloadManager直接进入外部存储目录

例如,我尝试直接在外部存储目录中下载一个大的 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 构造函数稍后搜索的位置。(实际上它下载到了错误的目录中!)

我正在寻找一种方法将这些文件直接下载到正确的目录中,而无需移动它们。

android path android-download-manager

2
推荐指数
1
解决办法
2962
查看次数

如何将属性集合传递给Gradle

我想使用命令行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)

这可能吗?

groovy gradle

2
推荐指数
1
解决办法
2443
查看次数

javax.ejb.TransactionRolledbackLocalException (Glassfish 3 + JPA + EclipseLink)

我在使用 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)

java ejb glassfish eclipselink jakarta-ee

1
推荐指数
1
解决办法
3386
查看次数

BroadcastReceiver不从IntentService接收广播

我正在尝试从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)

android broadcastreceiver intentservice

1
推荐指数
1
解决办法
2264
查看次数

使用Atmosphere Framework访问客户端IP

有一种方法可以使用Atmosphere Framework的AtmosphereResource或WebSocket访问客户端的IP吗?

ip java-ee websocket atmosphere

0
推荐指数
1
解决办法
325
查看次数