Content Provider 获取 UserDicationary returns 什么都没有
Content Provider to get UserDicationary returns nothing
编辑:我试着用它来添加一些词
UserDictionary.Words.addWord(getActivity().getApplicationContext(),"DROIDODD",11,null,null);
现在光标包含这个词,但是我如何访问个人词典中的其他词,
android 在哪里存储我们通过键盘输入的新词?
在这个数据存储中,那么为什么字典内容提供者不访问那些?
我正在尝试使用内容解析器获取并显示 android 用户词典中的单词,问题是返回的游标不包含任何值,游标计数为 0,
我想获取用户词典中的所有单词,并将其简单地附加到我的片段中的 textVIew
Fragment.java代码如下:
package com.sweetapps.managephonedictionary;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.UserDictionary;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* A placeholder fragment containing a simple view.
*/
public class MainActivityFragment extends Fragment {
private String details="The words in your personal dictionary are \n\n";
public MainActivityFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("myLog","Inside Oncreate");
//content provider code
ContentResolver contentResolver= getActivity().getApplicationContext().getContentResolver();
//get all details
Cursor cursor=contentResolver.query(UserDictionary.Words.CONTENT_URI,null,null,null,null );
Log.v("myLog",cursor.getCount()+"");
while (cursor.moveToNext())
{
details=details+cursor.getString(cursor.getColumnIndex(UserDictionary.Words.WORD));
Log.v("myLog",cursor.getString(cursor.getColumnIndex(UserDictionary.Words.WORD)));
}
cursor.close();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_main, container, false);
TextView textView= (TextView) view.findViewById(R.id.wordsTextView);
textView.setText(details);
return view;
}
}
我的输出只有The words in your personal dictionary are
我的 logcat 是
V/myLog﹕ Inside Oncreate
V/myLog﹕ 0
我哪里错了,我确定我的 phone 字典有很多词,我在多个设备上试过了,还是一样。
请帮忙!
我的三星设备也有类似的问题,似乎三星(出于某种原因)覆盖了用户词典...我从 Play 商店安装了 google 键盘,它有一个添加单词的选项到词典,当打开用户词典时,我发现它是空的,按添加词根本没有任何反应,除了系统声音:)。
如果您像我一样尝试使用内容提供者进行试验,发现用户字典是一个简单的目标,切换到用户联系人也同样简单。
首先更改权限,以便您可以访问通讯录
<uses-permission android:name="android.permission.READ_CONTACTS"/>
然后按如下方式更改您的内容解析器:
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int wordColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
这让我完成了其余的实验或练习..
首先我们需要检查我们的个人字典是否为空。
我用这个得到结果:
在你的phone
查找并点按设置 > 语言和输入法 > 个人词典 > 添加或 +(加号)图标。并加一句。现在尝试 运行 程序或应用程序。
字典是空的,当我添加一些值时,它返回了结果。
对于android、see this page.
的不同版本
上面的link我用的是sony
同样,您可以找到如何为其他手机添加词典。
编辑:我试着用它来添加一些词
UserDictionary.Words.addWord(getActivity().getApplicationContext(),"DROIDODD",11,null,null);
现在光标包含这个词,但是我如何访问个人词典中的其他词, android 在哪里存储我们通过键盘输入的新词? 在这个数据存储中,那么为什么字典内容提供者不访问那些?
我正在尝试使用内容解析器获取并显示 android 用户词典中的单词,问题是返回的游标不包含任何值,游标计数为 0, 我想获取用户词典中的所有单词,并将其简单地附加到我的片段中的 textVIew
Fragment.java代码如下:
package com.sweetapps.managephonedictionary;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.UserDictionary;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* A placeholder fragment containing a simple view.
*/
public class MainActivityFragment extends Fragment {
private String details="The words in your personal dictionary are \n\n";
public MainActivityFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("myLog","Inside Oncreate");
//content provider code
ContentResolver contentResolver= getActivity().getApplicationContext().getContentResolver();
//get all details
Cursor cursor=contentResolver.query(UserDictionary.Words.CONTENT_URI,null,null,null,null );
Log.v("myLog",cursor.getCount()+"");
while (cursor.moveToNext())
{
details=details+cursor.getString(cursor.getColumnIndex(UserDictionary.Words.WORD));
Log.v("myLog",cursor.getString(cursor.getColumnIndex(UserDictionary.Words.WORD)));
}
cursor.close();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_main, container, false);
TextView textView= (TextView) view.findViewById(R.id.wordsTextView);
textView.setText(details);
return view;
}
}
我的输出只有The words in your personal dictionary are
我的 logcat 是
V/myLog﹕ Inside Oncreate
V/myLog﹕ 0
我哪里错了,我确定我的 phone 字典有很多词,我在多个设备上试过了,还是一样。 请帮忙!
我的三星设备也有类似的问题,似乎三星(出于某种原因)覆盖了用户词典...我从 Play 商店安装了 google 键盘,它有一个添加单词的选项到词典,当打开用户词典时,我发现它是空的,按添加词根本没有任何反应,除了系统声音:)。
如果您像我一样尝试使用内容提供者进行试验,发现用户字典是一个简单的目标,切换到用户联系人也同样简单。
首先更改权限,以便您可以访问通讯录
<uses-permission android:name="android.permission.READ_CONTACTS"/>
然后按如下方式更改您的内容解析器:
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int wordColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
这让我完成了其余的实验或练习..
首先我们需要检查我们的个人字典是否为空。
我用这个得到结果:
在你的phone 查找并点按设置 > 语言和输入法 > 个人词典 > 添加或 +(加号)图标。并加一句。现在尝试 运行 程序或应用程序。
字典是空的,当我添加一些值时,它返回了结果。
对于android、see this page.
的不同版本上面的link我用的是sony
同样,您可以找到如何为其他手机添加词典。