在我的应用程序中,我将图像路径存储在我的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
这是我的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
好的一切工作正常,直到昨天我突然得到这个错误
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 …
这是我的数据库的基本架构
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)
这是我打算做的......
我的问题是考虑200名玩家和10000名用户,这种方法会有效吗?我将使用mysql.
我正在尝试使用不同的事务管理器嵌套事务,其中如果嵌套事务失败,外部主事务也需要回滚
@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()不会回滚。如何让回滚发挥作用?
当我通过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必须已经释放.我的程序运行但不会崩溃.
有人可以解释为什么会出现内存读取错误.