Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 读写用户字典权限拒绝_Android_Android Permissions_Android Contentresolver - Fatal编程技术网

Android 读写用户字典权限拒绝

Android 读写用户字典权限拒绝,android,android-permissions,android-contentresolver,Android,Android Permissions,Android Contentresolver,从UserDictionary.Words.CONTENT_URI表中的用户输入中搜索单词的简单应用程序。我正在使用BlueStacks模拟器。 错误日志表明在我的AndroidManifest中没有声明android.permission.READ\u USER\u字典或android.permission.WRITE\u USER\u字典。但我已宣布: <uses-permission android:name="ANDROID.PERMISSION.READ_USER_DICTION

从UserDictionary.Words.CONTENT_URI表中的用户输入中搜索单词的简单应用程序。我正在使用BlueStacks模拟器。 错误日志表明在我的AndroidManifest中没有声明android.permission.READ\u USER\u字典或android.permission.WRITE\u USER\u字典。但我已宣布:

<uses-permission android:name="ANDROID.PERMISSION.READ_USER_DICTIONARY"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_USER_DICTIONARY"/>
AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.contentresolver2"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="19"/>
    <uses-permission android:name="ANDROID.PERMISSION.READ_USER_DICTIONARY"/>
    <uses-permission android:name="ANDROID.PERMISSION.WRITE_USER_DICTIONARY"/>

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>
MainActivity.java:

package com.example.contentresolver2;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.UserDictionary;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements View.OnClickListener {

    private Cursor mCursor;
    private static final String LOG_TAG = "LOG_TAG";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        (findViewById(R.id.btnSearch)).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSearch:
                performSearch();
                break;
        }
    }

    /**
     * Read the word from the input and search in Android UserDictionary.Words table
     */
    private void performSearch() {

        // Select columns for projection
        String[] projection = {
                UserDictionary.Words._ID,
                UserDictionary.Words.WORD,
                UserDictionary.Words.LOCALE
        };
        String selectionClause = null;
        String[] selectionArgs = {""}; // only one element array
        String sortOrder = null;

        // Read user input
        String userInput = ((EditText) (findViewById(R.id.etSearchString))).getText().toString();

        // Decide what kind of request to perform
        if (TextUtils.isEmpty(userInput)) {
            // Setting the selection clause to null will return all words
            selectionClause = null;
            selectionArgs[0] = "";
        } else {
            // Or setting the selection clause to find the word from the input
            selectionClause = UserDictionary.Words.WORD + "= ?";
            selectionArgs[0] = userInput;
        }

        // Perform query
        mCursor = getContentResolver().query(
                UserDictionary.Words.CONTENT_URI,
                projection,
                selectionClause,
                selectionArgs,
                sortOrder
        );

        // Some providers return null if an error occurs, others throw an exception
        if (null == mCursor) {
            Log.e(LOG_TAG, "MainActivity > performSearch(): mCursor is null");

            // If the Cursor is empty, the provider found no matches
        } else if (mCursor.getCount() < 1) {
            Log.e(LOG_TAG, "MainActivity > performSearch(): mCursor mCursor is empty");

            // Results:
        } else {
            mCursor.moveToFirst();
            String resultString = mCursor.getString(mCursor.getColumnIndex(UserDictionary.Words.WORD));
            ((TextView) (findViewById(R.id.tvResultString))).setText(resultString);
        }
    }
}
main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:gravity="center_horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:textSize="20sp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Search in UserDictionary"
            />
    <EditText
            android:hint="Input a word to search in UserDictionary"
            android:id="@+id/etSearchString"
            android:layout_width="350dp"
            android:layout_height="wrap_content"/>
    <Button
            android:id="@+id/btnSearch"
            android:text="Search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView
            android:id="@+id/tvResultString"
            android:text="___"
            android:textSize="20sp"
            android:textColor="#FFFF00"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            />
</LinearLayout>

下面是答案:看起来权限是区分大小写的。谢谢你,你让我开心了!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:gravity="center_horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:textSize="20sp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Search in UserDictionary"
            />
    <EditText
            android:hint="Input a word to search in UserDictionary"
            android:id="@+id/etSearchString"
            android:layout_width="350dp"
            android:layout_height="wrap_content"/>
    <Button
            android:id="@+id/btnSearch"
            android:text="Search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView
            android:id="@+id/tvResultString"
            android:text="___"
            android:textSize="20sp"
            android:textColor="#FFFF00"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            />
</LinearLayout>