对于在Android联系人上设置SEND_TO_VOICEMAIL感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍android联系人,并为您提供关于(OK)port_lighttpd_to_A
对于在Android联系人上设置SEND_TO_VOICEMAIL感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍android 联系人,并为您提供关于(OK) port_lighttpd_to_Android——没有基于android 4.4源码、Android Oreo JobIntentService继续在Android 7及以下版本的后台运行,并且经常在Android 8及以上版本中崩溃、android – 从联系人选择器中筛选出Facebook联系人、android – 联系人中存在联系人的有用信息。
本文目录一览:- 在Android联系人上设置SEND_TO_VOICEMAIL(android 联系人)
- (OK) port_lighttpd_to_Android——没有基于android 4.4源码
- Android Oreo JobIntentService继续在Android 7及以下版本的后台运行,并且经常在Android 8及以上版本中崩溃
- android – 从联系人选择器中筛选出Facebook联系人
- android – 联系人中存在联系人
在Android联系人上设置SEND_TO_VOICEMAIL(android 联系人)
我正在尝试将SEND_TO_VOICEMAIL的值从0修改为1,反之亦然.
我成功修改了其他联系人的详细信息,例如姓名,电话号码,昵称,电子邮件,ecc …,但我需要更改SEND_TO_VOICEMAIL.
我尝试了很多可能性,但这应该可以工作…我猜:
String rawContactId = "1";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection( Data.RAW_CONTACT_ID + "=?" , new String[] { rawContactId })
.withValue(ContactsContract.RawContacts.SEND_TO_VOICEMAIL , 1)
.build()
);
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (remoteexception e) {
e.printstacktrace();
} catch (OperationApplicationException e) {
e.printstacktrace();
}
但是logcat说:
ERROR/AndroidRuntime(822): android.database.sqlite.sqliteException: no
such column: send_to_voicemail: , while compiling: UPDATE data SET
send_to_voicemail=? WHERE _id =?
我真的不知道该怎么尝试了.任何帮助将非常感激.
谢谢.
解决方法:
根据[手册,您要查找的SEND_TO_VOICEMAIL字段不在ContactsContract.Data表中,而是在ContactsContract.Contacts表中.似乎您正在尝试修改错误的表.
有关每个表中的字段,请参见ContactsContract.Data和ContactsContract.Contacts.
(OK) port_lighttpd_to_Android——没有基于android 4.4源码
[root@localhost lighttpd-1.4.37]# pwd/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]# ls /opt/cBPM-android/criteria-lin/lib/libpcre.a
/opt/cBPM-android/criteria-lin/lib/libpcre.a //下面有libpcre.a的编译过程
[root@localhost pcre-8.37]# pwd
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]# cp pcre.h /opt/cBPM-android/lighttpd-1.4.37/src/
[root@localhost lighttpd-1.4.37]# gedit src/network.c
添加:
#include "sys/un.h>
--------------------------------------问题: sock_addr has no member named un ,解决方法如下:
[root@localhost lighttpd-1.4.37]# gedit config.h
添加:
#define HAVE_SYS_UN_H 1
[root@localhost lighttpd-1.4.37]# make -j5
--------------------------------------
[root@localhost lighttpd-1.4.37]# gedit src/plugin.c
注释掉:
//#include "plugin-static.h"
--------------------------------------
+++++++++++++++++++++++++++++++++++++++++编译 lighttpd-1.4.37,将用到的库静态链接进来
[root@localhost lighttpd-1.4.37]# pwd
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="$NDK_ROOT/platforms/android-14/arch-arm"
export CFLAGS="-g --sysroot=$SYSROOT --pipe -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include"
export CPPFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -L/opt/cBPM-android/lighttpd-1.4.37/src/.libs -lstlport_static -lgcc -lc"
export CPATH="$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin"
export CPP="$CPATH/arm-linux-androideabi-cpp"
export CXX="$CPATH/arm-linux-androideabi-g++"
export CC="$CPATH/arm-linux-androideabi-gcc"
export LD="$CPATH/arm-linux-androideabi-ld"
export AR="$CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-androideabi" --without-bzip2 --without-zlib
--------------------------------------
./configure --host="arm-linux-eabi" --enable-static --disable-shared --without-bzip2 --without-zlib
--------------------------------------
export LDFLAGS="-L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -static -lstlport_static -lgcc -lc"
export CFLAGS="-DLIGHTTPD_STATIC -g --sysroot=$SYSROOT --pipe -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include"
--------------------------------------
[root@localhost lighttpd-1.4.37]# gedit config.h
添加:
#define HAVE_SYS_UN_H 1
[root@localhost lighttpd-1.4.37]# make -j5
--------------------------------------
[root@localhost lighttpd-1.4.37]# ll src/lighttpd
-rwxr-xr-x. 1 root root 926240 10月 20 17:02 src/lighttpd
[root@localhost lighttpd-1.4.37]#
编译完后会产生lighttpd
[root@localhost lighttpd-1.4.37]# adb push src/lighttpd /data/data/webserver
把 plugins (mod_*.so)都放到/data/data/webserver/plugin
[root@localhost lighttpd-1.4.37]# adb push src/.libs/somod /data/data/webserver/plugin
[root@localhost lighttpd-1.4.37]# adb push src/.libs/mod /data/data/webserver/plugin
[root@localhost lighttpd-1.4.37]# mv src/.libs/mod*.so src/.libs/somod
[root@localhost lighttpd-1.4.37]# ls src/.libs/ 库位置
另外 libpcre.so 是需要的,请确定libpcre.so有存在。本文
------------------------------------------------
[root@localhost lighttpd-1.4.37]# ls /opt/cBPM-android/criteria-lin/lib/
Criteria.xml helloworldcpp libiconv.a libLibraries.a libsqlite.so libWorkflowEngineD.so
libc.so libiconv.so.2 libLibraries.so libstdc++.so libxerces-c-3.1.so
executer libdl.a libiconv.so.2.5.1 libpcre.a libstlport.so libxerces-c.a
helloworld libdl.so libiconv.so.bac libsqlite.a libWorkflowEngineD.a temp2.txt
[root@localhost lighttpd-1.4.37]#
------------------------------------------------
+++++++++++++++++++++++++++++++++++++++
[root@localhost ~]# adb root
[root@localhost ~]# adb shell
root@mb526:/ # mkdir /data/data/webserver
root@mb526:/ # mkdir /data/data/webserver/plugin
root@mb526:/ # mkdir /data/data/www
root@mb526:/ # mkdir /data/data/www/log
root@mb526:/ # mkdir /data/data/www/run
root@mb526:/ # mkdir /data/data/www/etc
root@mb526:/ # mkdir /data/data/www/etc/lighttpd
root@mb526:/ # mkdir /data/data/www/etc/lighttpd/conf.d
root@mb526:/ # mkdir /data/data/www/tmp
root@mb526:/ # mkdir /data/data/www/htdocs
root@mb526:/ # mkdir /data/data/www/cgi-bin
root@mb526:/ # chmod 755 /data/data/www/cgi-bin
root@mb526:/ #
[root@localhost lighttpd-1.4.37]# pwd
/opt/cBPM-android/lighttpd-1.4.37
[root@localhost lighttpd-1.4.37]# adb push src/lighttpd /data/data/webserver
[root@localhost lighttpd-1.4.37]# adb push doc/config/conf.d/ /data/data/www/etc/lighttpd/conf.d/
[root@localhost lighttpd-1.4.37]# mkdir src/.libs/mod
[root@localhost lighttpd-1.4.37]# mv src/.libs/lib*.a src/.libs/mod/
[root@localhost lighttpd-1.4.37]# adb push src/.libs/mod/ /data/data/webserver/plugin/
接下来把 lighttpd soruce 内的 doc/config/conf.d 内的所有档案通通放到 /data/data/www/etc/lighttpd/conf.d/
然后在/data/data/www/etc/lighttpd/ 放上 lighttpd.conf, 内容如下:
[root@localhost lighttpd-1.4.37]# gedit doc/config/lighttpd.conf
#######################################################################
## /etc/lighttpd/lighttpd.conf
##
## check /etc/lighttpd/conf.d/*.conf for the configuration of modules.
#######################################################################
#######################################################################
## Some Variable definition which will make chrooting easier.
##
## if you add a variable here. Add the corresponding variable in the
## chroot example aswell.
##
var.log_root = "/data/data/www/log"
var.server_root = "/data/data/www"
var.state_dir = "/data/data/www/run"
var.home_dir = "/data/data/www"
var.conf_dir = "/data/data/www/etc/lighttpd"
var.cache_dir = home_dir + "/tmp"
var.socket_dir = home_dir + "/tmp"
server.modules = (
"mod_access",
)
server.port = 8000
server.use-ipv6 = "disable"
#server.username = "lighttpd"
#server.groupname = "lighttpd"
server.core-files = "enable"
server.document-root = server_root + "/htdocs"
#server.pid-file = state_dir + "/lighttpd.pid"
server.errorlog = log_root + "/error.log"
server.event-handler = "linux-sysepoll"
# not supported?
# I got an error "server.network-backend has a unknown value: linux-sendfile"
#server.network-backend = "linux-sendfile"
server.max-fds = 512
server.stat-cache-engine = "simple"
server.max-connections = 170
index-file.names += (
"index.xhtml", "index.html", "index.htm", "default.htm", "index.php"
)
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
##
## mimetype mapping
##
include "conf.d/mime.conf"
server.follow-symlink = "enable"
server.upload-dirs = ( "/data/data/www/tmp" )
#include "conf.d/webdav.conf"
#--------------------------------------------
[root@localhost lighttpd-1.4.37]# adb push doc/config/lighttpd.conf /data/data/www/etc/lighttpd/
上述动作都准备完毕后, 就可以用下述的指令来测试看看整个环境设定是否ok了
### $ ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf -m /system/lib/web-plugin //这行不用
root@mb526:/data/data/webserver # ./lighttpd -t -f /data/data/www/etc/lighttpd/lighttpd.conf
Syntax OK
root@mb526:/data/data/webserver #
如果没问题的话会, 执行结果会显示
Syntax OK
再来就是验证是否web server可以运行了, 用以下指令来启动lighttpd, -m 指明lib的位置
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
在/data/data/www/htdocs 内放一个index.html来测试
-------------------
Hello, lighthttpd on Android!!
-------------------
[root@localhost lighttpd-1.4.37]# adb push index.html /data/data/www/htdocs
在 宿主机(笔记本)的浏览器访问: http://192.168.0.101:8000/
输出结果:
------------------------
Hello, lighthttpd on Android!!
------------------------
至此,移植成功。
++++++++++++++++++++++++++++++++++++++++++++++++++
以下是要说明怎么启动cgi (也许google可以找到很多答案, 但是这边是我动手try过后确定可行的方法)
[root@localhost lighttpd-1.4.37]# gedit doc/config/lighttpd.conf
edit lighttpd.conf to add mod_alias plugin. 这个动作是一定要作的, 不然会发现就算之后已经有load mod_cgi, 且对应的conf 都设定了, 但却还是不 work.
-------------------
server.modules = (
"mod_access",
"mod_alias"
)
.....
.....
include "conf.d/cgi.conf"
-------------------
[root@localhost lighttpd-1.4.37]# adb push doc/config/lighttpd.conf /data/data/www/etc/lighttpd/
[root@localhost lighttpd-1.4.37]# gedit doc/config/conf.d/cgi.conf
再来就是去编辑 cgi.conf, 取消注释
-------------------
alias.url += ( "/cgi-bin" => server_root + "/cgi-bin" )
$HTTP["url"] =~ "^/cgi-bin" {
cgi.assign = ( "" => "" )
}
-------------------
[root@localhost lighttpd-1.4.37]# adb push doc/config/conf.d/cgi.conf /data/data/www/etc/lighttpd/conf.d/
[root@localhost lighttpd-1.4.37]# gedit hello.c
示范用C 写一个简单的cgi 程序来测试, 很简单, 试试以下内容:
-------------------
#include
int main(void) {
printf("Content-Type: text/html\n\n");
printf("Hello world\n\n");
return 0;
}
-------------------
》》》》》》》》》》》(OK) 宿主机交叉编译hello.c for android (--sysroot),不使用Android.mk和ndk-build
export PATH=$PATH:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/
[root@localhost lighttpd-1.4.37]# arm-linux-androideabi-gcc --sysroot=/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/ hello.c -o hello
[root@localhost lighttpd-1.4.37]# adb push hello /data/data/www/cgi-bin
将其编译好后放到/data/data/www/cgi-bin , 比如说 first, 之后就透过browser来测试看看
http://localhost:4080/cgi-bin/hello
如果成功的话, 可以看到browser上 Hello world!
------------------------至此,CGI成功
root@mb526:/data/data/webserver # ./lighttpd -D -f /data/data/www/etc/lighttpd/lighttpd.conf -m /data/data/webserver/plugin
------------------------
+++++++++++++++++++++++++++++++ 编译 pcre-8.37 静态库
[root@localhost pcre-8.37]#
/opt/cBPM-android/pcre-8.37
[root@localhost pcre-8.37]#
export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"
export SYSROOT="$NDK_ROOT/platforms/android-14/arch-arm"
export CFLAGS="-g --sysroot=$SYSROOT --pipe -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include"
export CPPFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -static -lstlport_static -lgcc -lc"
export CPATH="$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin"
export CPP="$CPATH/arm-linux-androideabi-cpp"
export CXX="$CPATH/arm-linux-androideabi-g++"
export CC="$CPATH/arm-linux-androideabi-gcc"
export LD="$CPATH/arm-linux-androideabi-ld"
export AR="$CPATH/arm-linux-androideabi-ar"
./configure --host="arm-linux-eabi" --enable-static --disable-shared
make -j5
[root@localhost pcre-8.37]# ls .libs/libpcre.a
[root@localhost pcre-8.37]# cp .libs/libpcre.a /opt/cBPM-android/criteria-lin/lib
++++++++++++++杂项
$ ldd ./libtest.so
Android Oreo JobIntentService继续在Android 7及以下版本的后台运行,并且经常在Android 8及以上版本中崩溃
Android 8&以上:
在Android 8及更高版本中连续发生崩溃.这里有一张票提到了同样的问题https://issuetracker.google.com/issues/63622293,我添加了一些极客建议的临时解决方案.
Android 7&下面:
一旦工作完成,JobIntentService就像Intent Service一样不会停止.
我在服务中实现了JobIntentService,只要用户执行某些操作就会触发该服务.
码
public class SampleJobIntentService extends FixedJobIntentService { public static void postData(Context context,String data) { Intent intent = new Intent(context,SampleJobIntentService.class); intent.setAction(INITIAL_ACTION); intent.putExtra(SAMPLE_ID,data); SampleJobIntentService.enqueueWork(context,intent); } public static void enqueueWork(Context context,Intent work) { SampleJobIntentService.enqueueWork(context,SampleJobIntentService.class,JOB_ID,work); @Override protected void onHandleWork(@NonNull Intent intent) { if (intent != null) { SampleRequest sampleRequest = requests.get(intent.getAction()); if (sampleRequest != null) { try { // perform some networking operations } catch (Exception ex) { Log.d("Error for intent "); } Log.i("send action "); } else Log.e("action not found for "); } } }
为了避免JobIntentService崩溃,我从https://issuetracker.google.com/issues/63622293获取了一些参考资料
public abstract class FixedJobIntentService extends JobIntentService { @Override GenericWorkItem dequeueWork() { try { return new FixedGenericWorkItem(super.dequeueWork()); } catch (SecurityException ignored) { doStopCurrentWork(); } return null; } private class FixedGenericWorkItem implements GenericWorkItem { final GenericWorkItem mGenericWorkItem; FixedGenericWorkItem(GenericWorkItem genericWorkItem) { mGenericWorkItem = genericWorkItem; } @Override public Intent getIntent() { if (mGenericWorkItem != null) { return mGenericWorkItem.getIntent(); } return null; } @Override public void complete() { try { if (mGenericWorkItem != null) { mGenericWorkItem.complete(); } } catch (IllegalArgumentException ignored) { doStopCurrentWork(); } } } }
解决方法
Well…,Its a lot big theory…!! It would not be able to put it all here. I will try my best which will make some your concepts clear.
我已经失去了2年阅读谷歌文档的完整年份…哪些是无用的…没有适当的文档,没有适合其开发人员的示例代码.. !!所以我在堆栈溢出的每个帖子中提到这一点,因为它有助于节省其他人的时间.. !!
它看起来你是一个优秀的程序员;只需要对您发布的问题提供一些提示:
提示-1:
YOU :- I have recently replaced all my service to foreground services and
JobIntentService
前台服务:
如果你需要所有的时间运行过程;什么都不会结束……一旦开始它就会在服务中使用它从其OnStartCommand返回START_STICKY.再次不建议使用,好像你想不惜一切代价实现它…那么你将不得不使用setongoing的通知(true)哪个最终用户无法刷掉你的通知,它将保留在那里永远….
使用前台服务:
接收器也有限制;在Oreo之上,您不能通过在清单中声明它并仅通过创建接收器来使用所有接收器和意图操作…我建议只使用BootComplete权限并使用单个接收器接收boot_completed意图并调用服务在O之下并调用O之上的前台服务.现在从该前台服务中为所有人实现运行时接收器并在Ondestroy方法中取消注册它.我从来没有找到实现运行时接收器的官方示例代码,最后我已经成功实施了几个月的艰苦工作…是的,这不是一个聪明的工作,因为谷歌
何时使用前台服务:
只有你想实现广播接收器….如果你不想实现任何广播接收器;远离…….
提示-2:
YOU :- I have recently replaced all my service to foreground services and
JobIntentService
**服务质量:**
只做一个非常微小的工作……然后退出……它必须由StopSelf()退出……再次,如果多次调用服务可能会导致数据丢失……同样的服务线程可以运行更多不止一次…再次,如果你想要一项服务做很多工作……使用START_STICKY ……但是不建议再次推荐我已经建议,何时在提示1中使用它.
** Intentservice的质量如下:**
执行相对较长时间运行的任务并且它只具有串行执行属性如果您反复调用同一个intentService,则所有调用将保留在队列中,并在逐个完成后逐个执行.如上所述,这不是服务中的情况.它自己结束……没有必要由开发人员结束.. !!
**独特的品质:**
一旦他们崩溃,android可以阻止他们将来调用,而不会通知你,因为它崩溃的应用程序.需要使用try-catch-exception处理它们以避免崩溃.再次……如果您在服务中实现线程,那么try-catch-exception将不会使您的应用程序崩溃…
**那么地狱&如何实施呢:**
使用FireBaseJobScedular: –
>易于使用
>使用简单的JobService
>可以运行更长或更短的时间任务……即使是所有的时间运行任务
>甚至非标准公司支持,如vivo,mi,oppo,one 3,…这需要库存 – android会对其进行更改,并提供FunTouchO,ColorOs,OxygenO等名称
>只需将电池设置更改为“不优化此应用”
>是谷歌正式支持它并建议使用它
>它创建GooglePlyService的实例并在其中运行.显然,非标准公司也不会限制谷歌应用程序执行其任务.
>在Oreo上工作..,即使我已经在Android P上测试过它,并且在Android版本5.0下作为AlarmManager任务工作.
>我仍然建议使用16以上的minsdk,目标sdk 26,好像万一你要将你的应用程序上传到谷歌播放它现在是强制性的,那个消息会听到你的消息.并编译sdk 26.
>只需将您的JobService绑定在清单中,并使用receive_boot_complete的单行权限
>只需安排它……它将在每个制造商的市场上的每个设备上启动……即使是冷启动和热启动
>它最大限度地减少了很多代码,你可以专注于实际的任务.
>任务完成后,您可以返回false以指示任务已完成,它将结束JobService.
为什么我建议,因为我是一个UNKNown公司的首席技术官,并且经历过许多类型的Android手机制造商的前台服务引起的问题……不是Apple和ios所以我们必须经历它.自18年以来一直是开发人员,我今天大部分都在编码…在所有开发项目中,我的开发策略仅由我来考虑.
Correct me … too… As you have not mentioned
what your tasks
andproject
is related to… and what you exactly wants to be done in aforeground service and intent-service
… Let me kNow…,It would be my pleasure to help you. It is a general theoretical answer rather than what you wants…. But for giving you actual answer i will need exact your project scope..
android – 从联系人选择器中筛选出Facebook联系人
new Intent(Intent.ACTION_PICK,People.CONTENT_URI)
有任何人对此有经验吗?
解决方法
无论如何,我的问题在这里:
How do get the android sdk contact picker to give me just phone results and not all my twitter followers
how do i get startActivityForResult() to bring up just a list of telephone contacts (like when i click on the “People” icon) using the android sdk?
在我的应用程序中,我正在测试手机从被挑选的联系人返回,然后尝试发送消息(因此我没有崩溃),但我不希望用户必须看到“该联系人没有号码”消息,如果他们没必要.
我也发现了这个:
http://mobile.dzone.com/news/contacts-api-20-and-above
虽然它没有向您展示如何过滤联系人列表,但它确实显示了如何以编程方式创建仅包含数字联系人的列表.如果您发现任何可能有用的内容,请回复我的问题,谢谢!
android – 联系人中存在联系人
以下是我写的代码:
public boolean contactExists(Activity _activity,String number) { String[] mPhoneNumberProjection = { PhoneLookup._ID,PhoneLookup.NUMBER,PhoneLookup.disPLAY_NAME }; Cursor cur = _activity.getContentResolver().query(number,mPhoneNumberProjection,null,null); try { if (cur.movetoFirst()) { return true; } } finally { if (cur != null) cur.close(); } return false; }// contactExists
提前致谢…
解决方法
public boolean contactExists(Activity _activity,String number) { if (number != null) { Uri lookupUri = Uri.withAppendedpath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number)); String[] mPhoneNumberProjection = { PhoneLookup._ID,PhoneLookup.disPLAY_NAME }; Cursor cur = _activity.getContentResolver().query(lookupUri,null); try { if (cur.movetoFirst()) { return true; } } finally { if (cur != null) cur.close(); } return false; } else { return false; } }// contactExists
处理nullpointer异常.
关于在Android联系人上设置SEND_TO_VOICEMAIL和android 联系人的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于(OK) port_lighttpd_to_Android——没有基于android 4.4源码、Android Oreo JobIntentService继续在Android 7及以下版本的后台运行,并且经常在Android 8及以上版本中崩溃、android – 从联系人选择器中筛选出Facebook联系人、android – 联系人中存在联系人的相关信息,请在本站寻找。
本文标签: