java.lang.SecurityException:权限拒绝:从ProcessRecord打开提供程序com.android.providers.media.MediaDocumentsProvider {430b1748 29271:com.xxx/u0a88}(pid = 29271,uid = 10088)需要android.permission.MANAGE_DOCUMENTS或android. permission.MANAGE_DOCUMENTS
我已添加MANAGE_DOCUMENTS
和READ_EXTERNAL_STORAGE
权限,但我仍然收到此错误.违规代码:
public static String getImagePath(HailoDriverApplication app, Uri uri) {
Cursor cursor = null;
if (uri == null) {
return null;
}
try {
cursor = app.getContentResolver().query(uri, new String[] {
MediaStore.Images.Media.DATA
}, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
正如所要求的清单片段:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.x.x.x" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" /> …
Run Code Online (Sandbox Code Playgroud) 对于使用钻石操作符的库,我需要1.7.
我遵循了这些答案......但没有快乐.
从gradle构建
compileSdkVersion 19
buildToolsVersion '19.0.3'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
minSdkVersion 10
targetSdkVersion 19
versionCode 22
versionName "1.3.1"
}
Run Code Online (Sandbox Code Playgroud)
错误:任务':MyApp:compileDefaultFlavorDebugJava'的执行失败.
无效的源代码版本:1.7
Java home设置为:$ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
我正在使用AsyncTaskLoader
.我有一个已经实现的活动LoaderCallbacks
(支持库).
我有断点调试并放入日志,加载器传递结果,但是第二次onLoadFinished
没有触发回调.奇怪的是 - 当我再次向后旋转时它起作用,当我回到它时,我开始的方向会得到回调.
在我的活动中onResume
:
LoaderManager lm = getSupportLoaderManager();
Loader loader = lm.initLoader(0, null, new LoaderManager.LoaderCallbacks<String>() {
@Override
public Loader<String> onCreateLoader(int i, Bundle bundle) {
Loader<String> loader = new TestLoader(MainActivity.this);
return loader;
}
@Override
public void onLoadFinished(Loader<String> stringLoader, String s) {
Log.d(Application.TAG, "OnLoadFinished " + s);
doStuff(s);
}
@Override
public void onLoaderReset(Loader<String> stringLoader) {
// NOP
}
});
Run Code Online (Sandbox Code Playgroud)
在我的装载机:
public class TestLoader extends AsyncTaskLoader<String> {
private String mData;
public TestLoader(Context context) { …
Run Code Online (Sandbox Code Playgroud) 如何判断Android设备是否有物理键或软件导航栏?我需要根据是否绘制软件导航来更改布局.
例如,HTC Desire C有硬件密钥:
我应该澄清 - 我看着导航栏,而不是键盘.家,背等我试过:
getResources().getConfiguration().keyboard);
getResources().getConfiguration().navigation);
getResources().getConfiguration().navigationHidden);
Run Code Online (Sandbox Code Playgroud)
在两个设备上返回相同的值.
我有一个Android应用程序,我按照这些说明实现共享.
我设法让它运作起来.我第二天回来了,我在logcat中得到了这个输出:
G+ on connection failed ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{422d8470: android.os.BinderProxy@422d8410}}
Run Code Online (Sandbox Code Playgroud)
我已经检查了api控制台,删除了我的OAuth clientID并重新输入了新的.这还没有解决它.有什么想法可以解决它吗?
我有一个类JSBridge(一个内部类),它是一个javascript接口:
private class JsBridge implements JsCallback {
/**
* @param handlerName method required
* @param jsonData data passed through from javascript
* @param jsCallback A callback to trigger when handler specified by handlername has finished, could be null
*/
@JavascriptInterface
public void callHandler(final String handlerName, final String jsonData, final String jsCallback) {
Log.d(App.TAG, "Bridge call from JS, received " + handlerName);
}
@JavascriptInterface
public void onPageLoad(final String pageName) {
Log.d(App.TAG, "Bridge call from JS, received onPageLoad - we have the …
Run Code Online (Sandbox Code Playgroud) 我看到了很多,我想知道是否有一种方法可以很好地重构这个以避免大规模切换?这是工厂中的一种方法:RoomControllerFactory,根据其类型实例化游戏位置.以下是工厂方法中的开关示例:
switch (location.getType())
{
case Location.ROOMONE:
return new RoomOneController(location, data, view);
case Location.ROOMTWO:
return new RoomTwoController(location, data, view);
case Location.ROOMTHREE:
return new RoomThreeController(location, data, view);
Run Code Online (Sandbox Code Playgroud) 我有一个作为绑定服务的应用程序。我正在向服务发送消息,但有时会出现以下错误:
E/AndroidRuntime(28216): java.lang.IllegalStateException: 指定的消息队列同步屏障令牌尚未发布或已被删除。
有时我会收到此错误:
android.util.AndroidRuntimeException: { what=888 when=0 } 此消息已被使用。
有时用户界面只是冻结。我通过处理程序从服务到活动进行通信,反之亦然。
public void init(IBinder service){
playerService = new Messenger(service);
setBound(true);
try {
Message msg = Message.obtain(null, PlayerService.MSG_REGISTER_CLIENT);
msg.replyTo = messenger;
playerService.send(msg);
while(!messageQueue.isEmpty()){
playerService.send(messageQueue.remove());
}
} catch (RemoteException e) {
// In this case the service has crashed before we could even do anything with it
Log.d(Player.TAG, "problem binding player messenger " + e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
这是第二次调用时始终会导致冻结的方法。
public void play(String url) {
Message msg = Message.obtain(null, PlayerService.PLAY, 0, 0);
msg.setData(getURLBundle(url)); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从数据库中删除某些内容然后插入一个新值.我对数据库知之甚少,所以希望了解这里出了什么问题.
我一直收到以下错误:
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase:
Run Code Online (Sandbox Code Playgroud)
它从异步任务调用,第一次正常工作,但第二次触发任务时中断.
以下是重要的片段:
public void removeAndInsert(String configRaw) {
SQLiteDatabase sqlite = null;
try {
sqlite = dbHelper.getWritableDatabase();
removeAndInsert(configRaw, sqlite);
.....
finally {
if (sqlite != null) {
sqlite.close();
}
}
void removeAndInsert(String configRaw, SQLiteDatabase sqlite) throws SQLException {
ContentValues initialValues = new ContentValues();
initialValues.put(DBOpenHelper.CONFIG_CACHE_RAW_DATA, configRaw);
sqlite.delete(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, null);
sqlite.insert(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, initialValues);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用自定义 AppBarLayout,因为我想要一个带有高度阴影的工具栏的自定义形状。背景在 AppBarLayout 上设置为自定义 Drawable,我使用以下代码来获取要在工具栏上呈现的阴影。
setClipToOutline(true);
setOutlineProvider(ViewOutlineProvider.BACKGROUND);
Run Code Online (Sandbox Code Playgroud)
一切都很好,阴影呈现。但是,我的 CollapsingToolbarLayout 还包含一些选项卡,当我折叠工具栏时,我希望我的选项卡保持可见。目前,当我滚动整个工具栏时,包括标签在内的整个工具栏都会消失,只有当我在 CollapsingToolbarLayout 上设置 exitUntilCollapse 时,标签才会在滚动后保留。问题是当我设置这个标志时,我的高程阴影停止渲染!为什么会这样?有没有办法解决它,还有其他方法可以阻止我的标签消失吗?
我在下面包含了一些相关的布局代码:
<com.ss.views.CustomBackgroundAppBarLayout
android:id="@+id/main.appbar"
android:layout_width="match_parent"
android:layout_height="350dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_behavior="com.ss.views.FlingBehaviour"
>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/main.collapsing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:expandedTitleMarginBottom="0dp"
app:expandedTitleMarginEnd="0dp"
app:expandedTitleMarginStart="0dp"
app:expandedTitleMarginTop="0dp"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"
app:titleEnabled="false"
>
<include
android:id="@+id/tab_layout"
layout="@layout/include_tab_layout"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/main.toolbar"
android:minHeight="100dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_collapseMode="parallax"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
<include
android:id="@+id/user_dash"
app:layout_collapseMode="parallax"
layout="@layout/include_toolbar_user_dash"/>
</android.support.design.widget.CollapsingToolbarLayout>
</com.ss.views.CustomBackgroundAppBarLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-toolbar android-coordinatorlayout android-appbarlayout