小编Pdk*_*ock的帖子

如何在android API 19(KitKat)中保留权限?

在我的应用程序中,我将图像路径存储在我的SQlite数据库中以供进一步使用.我得到的路径是

content://com.android.providers.media.documents/document/image%3A71964
Run Code Online (Sandbox Code Playgroud)

当我从数据库中检索此路径并尝试从该路径中检索图像时,机器人抛出

java.lang.SecurityException: Permission Denial: opening provider
com.android.providers.media.MediaDocumentsProvider 
from ProcessRecord{42c84ec8 23911:com.gots.gb/u0a248} (pid=23911, uid=10248) 
requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
Run Code Online (Sandbox Code Playgroud)

根据https://developer.android.com/guide/topics/providers/document-provider.html#permissions我需要通过添加以下代码来保留权限

final int takeFlags = intent.getFlags()
        & (Intent.FLAG_GRANT_READ_URI_PERMISSION
        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(uri, takeFlags);
Run Code Online (Sandbox Code Playgroud)

当我将此代码添加到我的ImageAdapter类时,它扩展了BaseAdapter android抛出

08-21 02:14:38.530: W/System.err(24452): java.lang.SecurityException:
No permission grant found for UID 10248 and Uri 
content://com.android.providers.media.documents/document/image:71964
Run Code Online (Sandbox Code Playgroud)

这是我的ImageAdapter代码的相关部分

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView ;


    if (convertView == null){
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-4.4-kitkat storage-access-framework

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

Android studio 1.1.0设置minifyEnabled true导致app的问题

这是我的gradle.build文件

defaultConfig {

    minSdkVersion 15
    targetSdkVersion 21
    versionCode 2
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Run Code Online (Sandbox Code Playgroud)

Proguard-rules.pro文件

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

-dontwarn com.squareup.**
-dontwarn okio.**
-dontwarn retrofit.**
-dontwarn org.joda.time.**
Run Code Online (Sandbox Code Playgroud)

我有一个java类作为

public class Endpoints {
    public final static String GET_ENDPOINT = "MY_ENDPOINT";
}
Run Code Online (Sandbox Code Playgroud)

我在改装的restadapter中使用的

 RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(Endpoints.GET_ENDPOINT)
            .setLogLevel(RestAdapter.LogLevel.NONE)
            .setConverter(new GsonConverter(gson))
            .setClient(new OkClient(BusProvider.getClientInstance()))
            .build();
Run Code Online (Sandbox Code Playgroud)

现在当minifiyEnabled为false时,整个代码工作正常但我将minifyEnabled设置为true,网络调用不会发生.我的应用程序在启动后立即调用此端点,但网络日志不会显示正在进行的网络请求.谁能告诉我这里有什么问题?

android proguard android-studio android-gradle-plugin retrofit

12
推荐指数
2
解决办法
4028
查看次数

ORA 12514错误:TNS监听器错误

好的一切工作正常,直到昨天我突然得到这个错误
ORA-12514:TNS:监听器目前不知道连接描述符中请求的服务
没有被修改

XE =
  (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = jainam-2b1c493d)(PORT = 1521))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
        (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

  ORACLR_CONNECTION_DATA = 
      (DESCRIPTION = 
     (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
     (CONNECT_DATA = 
   (SID = CLRExtProc) 
   (PRESENTATION = RO) 
 ) 
) 
Run Code Online (Sandbox Code Playgroud)


我完全陷入困境,不知道该怎么做.我从这里尝试了帮助
http://dba-oracle.com/t_ora_12514_tns_listener_does_not_currently_know_service_requested.htm 但没有用.谢谢


编辑:
这是输出到lsnrctl …

tns oracle11g

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

幻想联盟的数据库设计

这是我的数据库的基本架构

Table user{  
      userid numeber primary key,  
      count number  
}

Table player{  
      pid number primary key,  
}

Table user-player{  
      userid number primary key foreign key(user),  
      pid number primary key foreign key(player)  
}

Table temp{  
      pid number primary key,  
      points number  
}
Run Code Online (Sandbox Code Playgroud)

这是我打算做的......

  • 每次比赛结束后,临时表都会更新,其中包含参加最后一场比赛的球员的ID以及他们获得的积分.
  • 接下来运行一个过程,该过程将匹配临时表中的pid与具有相同pid的每个用户 - 播放器表的uid.
  • 将临时表中的点添加到每个匹配的uid的用户表计数中.
  • 空临时表.

我的问题是考虑200名玩家和10000名用户,这种方法会有效吗?我将使用mysql.

mysql database-design

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

Spring中使用不同事务管理器的嵌套事务

我正在尝试使用不同的事务管理器嵌套事务,其中如果嵌套事务失败,外部主事务也需要回滚

    @Transactional(transactionManager = "txManager1", propagation = Propagation.REQUIRED)
    public int doOps() {
         doSuccessfulDatabaseThings();
         doOps2();
    }

    @Transactional(transactionManager = "txManager2", propagation = Propagation.REQUIRED)
    public int doOps2() {
        //this throws error
    }
Run Code Online (Sandbox Code Playgroud)

我的 spring 配置文件有

<bean id="dataSource1" class ="com.mchange.v2.c3p0.ComboPooledDataSource">
...
</bean>

<bean id="txManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource1" />
</bean>
<!-- txManager2 defined similarly -->
<tx:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)

但是,当doOps2()失败时,事务doOps()不会回滚。如何让回滚发挥作用?

java spring spring-transactions spring-data

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

Valgrind:读取大小为8的错误

当我通过valgrind运行我的程序时,我得到以下内容

==29852== Invalid read of size 8
==29852==    at 0x4EDEA50: std::_Rb_tree_increment(std::_Rb_tree_node_base const*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==29852==    by 0x414EEA: std::_Rb_tree_const_iterator<std::pair... >::operator++() (stl_tree.h:284)
==29852==    by 0x4268CF: Tree::removeConstantsPair(std::set...) (Tree.h:65)
==29852==    by 0x4239C4: yy_reduce(yyParser*, int) (parser.y:251)
==29852==    by 0x425F6D: Parse(void*, int, Token*, Tree*) (parser.c:1418)
==29852==    by 0x404837: main (main.cpp:95)
Run Code Online (Sandbox Code Playgroud)

Tree.h中的第65行是

inline void removeConstantsPair(set<pair<string, string>>& vec){
    set<string>::iterator itr; 
    for(auto &v : vec){ //This is line 65
        itr = domainList.find(v.first);
        if(itr != domainList.end())
            vec.erase(v);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,泄漏摘要说没有丢失的记忆.根据我的理解,如果我从已经释放的内存中读取,则会发生无效读取,因此在我的情况下&vec必须已经释放.我的程序运行但不会崩溃.

有人可以解释为什么会出现内存读取错误.

c++ valgrind memory-management c++11

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