标签: android-4.4-kitkat

从URI,Android KitKat新的存储访问框架获取真实路径

Android 4.4(KitKat)中访问新图库之前,我使用此方法在SD卡上获得了真正的路径:

public String getPath(Uri uri) {
   String[] projection = { MediaStore.Images.Media.DATA };
   Cursor cursor = managedQuery(uri, projection, null, null, null);
   startManagingCursor(cursor);
   int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
   cursor.moveToFirst();
 return cursor.getString(column_index);
}
Run Code Online (Sandbox Code Playgroud)

现在,Intent.ACTION_GET_CONTENT返回不同的数据:

之前:

content://media/external/images/media/62
Run Code Online (Sandbox Code Playgroud)

现在:

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

我怎么能设法获得SD卡上的真实路径?

android uri path android-4.4-kitkat

199
推荐指数
8
解决办法
23万
查看次数

windowSoftInputMode ="adjustResize"不适用于半透明动作/导航栏

我在新的Android KitKat(4.4)中使用半透明操作栏/导航栏时出现问题windowSoftInputMode="adjustResize".

Normaly将InputMode更改为adjustResize,应用程序应该在键盘显示时自行调整大小......但是在这里它不会!如果我删除透明效果的行,则调整大小正常.

因此,如果键盘可见,我的ListView就在它下面,我无法访问最后几个项目.(只能手动隐藏键盘)

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="XYZ"
android:versionCode="23"
android:versionName="0.1" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="19" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.XYZStyle" >
    <activity
        android:name="XYZ"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustResize" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

值-V19/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="Theme.XYZStyle" parent="@style/Theme.AppCompat.Light">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

</resources>
Run Code Online (Sandbox Code Playgroud)

fragment.xml之

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
    android:id="@+id/listView_contacts"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:drawSelectorOnTop="true"
    android:fastScrollAlwaysVisible="true"
    android:fastScrollEnabled="true"
    android:paddingBottom="@dimen/navigationbar__height" >
</ListView> …
Run Code Online (Sandbox Code Playgroud)

android resize statusbar window-soft-input-mode android-4.4-kitkat

117
推荐指数
8
解决办法
8万
查看次数

如何在对话框中保持沉浸式模式?

当我的活动显示自定义对话框时,如何保持新的沉浸式模式?

我正在使用此代码来维护对话框中的沉浸模式,但是使用此解决方案,当我启动自定义对话框时,NavBar会出现不到一秒钟,然后它就会消失.

这是一个更好地解释问题的视频(当NavBar出现时查看屏幕底部):http://youtu.be/epnd5ghey8g

我该如何避免这种行为?

我申请中所有活动的父亲:

public abstract class ImmersiveActivity extends Activity {

    @SuppressLint("NewApi")
    private void disableImmersiveMode() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_FULLSCREEN
            );
        }
    }

    @SuppressLint("NewApi")
    private void enableImmersiveMode() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            getWindow().getDecorView().setSystemUiVisibility(
                      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
                    | View.SYSTEM_UI_FLAG_FULLSCREEN 
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            );
        }
    }


    /**
     * Set the Immersive mode or not according to its state in the settings:
     * enabled or not.
     */
    protected void updateSystemUiVisibility() {
        // Retrieve …
Run Code Online (Sandbox Code Playgroud)

android dialog android-dialog android-activity android-4.4-kitkat

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

蓝牙免提客户端音量控制

我有一个Android设备充当使用hfp的免提客户端设备.

使用以下代码:

我能够接听电话,扬声器和麦克风按预期工作.

我的问题是我似乎无法控制音量.

我尝试使用以下代码行来查找正确的流,但它们似乎都不起作用.

我跟踪了从手机发送到类中客户端的音量命令HeadsetClientStateMachine,在以下链接中的#1822行:来自lolipop的HeadsetClientStateMachine

case EVENT_TYPE_VOLUME_CHANGED:
    if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) {
        mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI);
        mVgsFromStack = true;
       Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2);
    }
Run Code Online (Sandbox Code Playgroud)

当我更改手机上的音量时,我确实看到日志显示声音的更新值,这意味着setStreamVolume()正在调用该方法,但音量不会改变.

有谁知道可能导致这个问题的原因是什么?

编辑:

我仍然在寻找答案,现在正在寻找音频HAL实现.我怀疑HAL和音频驱动程序之间的链接在某种程度上是不正确的...我不太了解低级别的实现,我不确定我应该寻找什么.

android bluetooth android-4.4-kitkat hfp

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

无法用android 4.4旋转模拟器

我已经将我的sdk更新到最新版本(android 4.4)并启动了模拟器,但现在似乎无法用CTRL + F11旋转屏幕,屏幕更改但所有应用程序都没有更改.我不知道这是否是一个相关的问题,但我可以看到,即使我用menùhw按钮创建了一个新的模拟器,现在所有的应用程序都有溢出按钮.

android android-emulator android-4.4-kitkat

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

ADT 22.3(android 4.4) - 获取错误"在场景创建之后,必须调用#init()"

安装支持Android 4.4(KitKat)的新ADT(22.3.0.v201310242005-887826)后,我不断收到错误,如下所示:

在此输入图像描述

发生了一个内部的错误

在错误列表中,我看到多个"RenderPreview"项,当我点击其中任何一个时,我看到:

发生内部错误.场景创建后,必须调用#init()

在另一台计算机上测试新的ADT时,我看不到出现此错误.这很奇怪.

为什么我会收到这些错误,我该怎么做才能解决?

eclipse android gui-designer adt android-4.4-kitkat

57
推荐指数
3
解决办法
7079
查看次数

isValidFragment Android API 19

当我使用Android KitKat尝试我的应用程序时,我在PreferenceActivity中出错.

PreferenceActivity的子类必须覆盖isValidFragment(String)以验证Fragment类是否有效!com.crbin1.labeltodo.ActivityPreference尚未检查片段com.crbin1.labeltodo.StockPreferenceFragment是否有效

在文档中,我找到以下解释

protected boolean isValidFragment(String fragmentName)

在API级别19中添加

子类应覆盖此方法并验证给定片段是否要附加到此活动的有效类型.对于为Android构建的应用程序,默认实现返回true:比KITKAT更早的targetSdkVersion.对于更高版本,它将抛出异常.

我找不到任何解决问题的例子.

android android-fragments android-4.4-kitkat

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

尝试从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万
查看次数

evaluateJavascript如何工作?

我正在尝试在Android 4.4中使用新的evaluateJavascript方法,但我得到的所有内容都是null结果:

webView1.evaluateJavascript("return \"test\";", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Log is written, but s is always null
    }
});
Run Code Online (Sandbox Code Playgroud)

如何将结果返回此方法?

更新:更多信息:

  1. 我有INTERNET权限集
  2. 我有 setJavascriptEnabled(true);
  3. 试过撇号字符串:return 'test';,
  4. 试过JS对象: return { test: 'this' }
  5. console.log('test'); 正在执行罚款.
  6. 按照以下方式设置targetSdkVersion为19:如果您的应用使用WebView

设备: Nexus 7和Nexus 5(股票)

android android-webview android-4.4-kitkat

45
推荐指数
5
解决办法
8万
查看次数

在android webview中输入HTML文件(android 4.4,kitkat)

<input type="file">在android webview上使用了它.我得到了它的工作感谢这个线程: WebView中的文件上传

但接受的答案(或任何其他)不再适用于android 4.4 kitkat webview.

有谁知道如何解决它?

它也不适用于目标18.

我看了一些android 4.4源代码,似乎WebChromeClient没有改变,但我认为setWebChromeClient不再适用于kitkat webview,或者至少不是这个openFileChooser功能.

html android webview cordova android-4.4-kitkat

43
推荐指数
4
解决办法
8万
查看次数