小编ser*_*kye的帖子

尝试从MediaStore读取时,Android KitKat securityException

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_DOCUMENTSREAD_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)

android android-4.4-kitkat

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

使用gradle进行编译时,源代码版本1.7无效

对于使用钻石操作符的库,我需要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

android gradle android-build

29
推荐指数
2
解决办法
2万
查看次数

Android Loader不会在屏幕旋转时触发回调

我正在使用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 android-loadermanager android-loader

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

如何判断一个Android设备是否有硬键

如何判断Android设备是否有物理键或软件导航栏?我需要根据是否绘制软件导航来更改布局.

例如,HTC Desire C有硬件密钥: 在此输入图像描述

我应该澄清 - 我看着导航栏,而不是键盘.家,背等我试过:

        getResources().getConfiguration().keyboard);
        getResources().getConfiguration().navigation);
        getResources().getConfiguration().navigationHidden);
Run Code Online (Sandbox Code Playgroud)

在两个设备上返回相同的值.

android

10
推荐指数
2
解决办法
8614
查看次数

Google+分享停止工作

我有一个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并重新输入了新的.这还没有解决它.有什么想法可以解决它吗?

android google-plus

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

Proguard阻止了WebView中的Javascript工作

我有一个类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)

proguard android-webview

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

是否可以选择切换工厂方法?

我看到了很多,我想知道是否有一种方法可以很好地重构这个以避免大规模切换?这是工厂中的一种方法: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)

refactoring design-patterns actionscript-3

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

指定的消息队列同步屏障令牌尚未发布

我有一个作为绑定服务的应用程序。我正在向服务发送消息,但有时会出现以下错误:

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)

android android-handler

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

尝试重新打开已关闭的对象:SQLiteDatabase:

我正在尝试从数据库中删除某些内容然后插入一个新值.我对数据库知之甚少,所以希望了解这里出了什么问题.

我一直收到以下错误:

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)

sqlite android

6
推荐指数
2
解决办法
4万
查看次数

Android - 设置 exitUntilCollapsed 时,CollapsingToolbarLayout 高程阴影消失

我正在使用自定义 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

5
推荐指数
0
解决办法
1273
查看次数