Android studio 如何禁用拾取联系人请求
我正在开发一个预打包的应用程序,它有一个联系人选择器选项,我需要禁用它,因为它对我们没有任何用途。这是针对使用个人地址的单用户搜索。我在这里找到了一篇关于如何添加它的文章: 他们列出的代码如下:Android studio 如何禁用拾取联系人请求,android-studio,android,Android Studio,Android,我正在开发一个预打包的应用程序,它有一个联系人选择器选项,我需要禁用它,因为它对我们没有任何用途。这是针对使用个人地址的单用户搜索。我在这里找到了一篇关于如何添加它的文章: 他们列出的代码如下: private void pickContact() { // Create an intent to "pick" a contact, as defined by the content provider URI Intent intent = new Intent(Intent.A
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
// Perform a query to the contact's content provider for the contact's name
Cursor cursor = getContentResolver().query(data.getData(),
new String[] {Contacts.DISPLAY_NAME}, null, null, null);
if (cursor.moveToFirst()) { // True if the cursor is not empty
int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);
// Do something with the selected contact's name...
}
}
}
我只想禁用这个。我可以从调用它们的文件夹中删除图像,但仍然会留下一个活动的角落。如果让它保持这种状态,那将是糟糕的可用性。我试着从代码中注释和删除这些内容,它只会抛出2-3个错误
这是my HomeActivity.java文件,显示以下代码:
package com.votinginfoproject.VotingInformationProject.activities;
import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.votinginfoproject.VotingInformationProject.R;
import com.votinginfoproject.VotingInformationProject.fragments.HomeFragment;
import com.votinginfoproject.VotingInformationProject.models.VIPApp;
import com.votinginfoproject.VotingInformationProject.models.VIPAppContext;
import com.votinginfoproject.VotingInformationProject.models.VoterInfo;
public class HomeActivity extends FragmentActivity implements HomeFragment.OnInteractionListener,
LoaderManager.LoaderCallbacks<Cursor> {
static final int PICK_CONTACT_REQUEST = 1;
VIPApp app;
Uri contactUri;
EditText addressView;
LoaderManager loaderManager;
public String getSelectedParty() {
return selectedParty;
}
public void setSelectedParty(String selectedParty) {
this.selectedParty = selectedParty;
app.setSelectedParty(selectedParty);
}
String selectedParty;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
app = new VIPAppContext((VIPApp) getApplicationContext()).getVIPApp();
loaderManager = getLoaderManager();
selectedParty = "";
contactUri = null;
addressView = (EditText)findViewById(R.id.home_edittext_address);
// Get analytics tracker (should auto-report)
app.getTracker(VIPApp.TrackerName.APP_TRACKER);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
@Override
protected void onStop() {
super.onStop();
//Stop analytics tracking
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}
@Override
protected void onStart() {
super.onStart();
//Get an Analytics tracker to report app starts, uncaught exceptions, etc.
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
return id == R.id.action_settings || super.onOptionsItemSelected(item);
}
public void onGoButtonPressed(View view) {
Intent intent = new Intent(this, VIPTabBarActivity.class);
startActivity(intent);
}
public void onSelectContactButtonPressed(View view) {
// contact picker intent to return an address; will only show contacts that have an address
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user picked a contact.
// The Intent's data Uri identifies which contact was selected.
// Get the URI that points to the selected contact
contactUri = data.getData();
// restart loader, if a contact was already selected
loaderManager.destroyLoader(PICK_CONTACT_REQUEST);
// start async query to get contact info
loaderManager.initLoader(PICK_CONTACT_REQUEST, null, this);
} else {
// PASS (user didn't pick an address)
}
}
}
public void searchedAddress(VoterInfo voterInfo) {
// set VoterInfo object on app singleton
app.setVoterInfo(voterInfo, selectedParty);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
if (contactUri == null) {
return null;
}
String[] projection = { ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS };
return new CursorLoader(this, contactUri, projection, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data.getCount() > 0) {
data.moveToFirst();
// get result with single column, named data1
String address = data.getString(0);
Log.d("HomeActivity", "Got cursor result: " + address);
// set address found in view
addressView.setText(address);
// initate search with new address
HomeFragment myFragment = (HomeFragment)getSupportFragmentManager().findFragmentById(R.id.home_fragment);
myFragment.makeElectionQuery();
} else {
Log.e("HomeActivity", "Cursor got no results!");
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// PASS
}
}
package com.votinginfoproject.VotingInformationProject.activities;
导入android.app.LoaderManager;
导入android.content.CursorLoader;
导入android.content.Intent;
导入android.content.Loader;
导入android.database.Cursor;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.support.v4.app.FragmentActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.EditText;
导入com.google.android.gms.analytics.GoogleAnalytics;
导入com.votinginfoproject.VotingInformationProject.R;
导入com.votinginfoproject.VotingInformationProject.fragments.HomeFragment;
导入com.votinginfoproject.VotingInformationProject.models.VIPApp;
导入com.votinginfoproject.VotingInformationProject.models.VIPAppContext;
导入com.votinginfoproject.VotingInformationProject.models.VoterInfo;
公共类HomeActivity扩展FragmentActivity实现HomeFragment.OnInteractionListener,
LoaderManager.LoaderCallbacks{
静态最终int选择联系人请求=1;
VIPApp应用程序;
Uri-contactUri;
编辑文本地址视图;
装载机管理器装载机管理器;
公共字符串getSelectedParty(){
返回所选的一方;
}
public void setSelectedParty(字符串selectedParty){
this.selectedParty=selectedParty;
应用程序设置选定方(选定方);
}
字符串选择方;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
app=new VIPAppContext((VIPApp)getApplicationContext()).getVIPApp();
loaderManager=getLoaderManager();
选定方=”;
contactUri=null;
addressView=(EditText)findViewById(R.id.home\u EditText\u地址);
//获取分析跟踪程序(应自动报告)
app.getTracker(VIPApp.TrackerName.app\u TRACKER);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.home,menu);
返回true;
}
@凌驾
受保护的void onStop(){
super.onStop();
//停止分析跟踪
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}
@凌驾
受保护的void onStart(){
super.onStart();
//获取分析跟踪程序以报告应用程序启动、未捕获的异常等。
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
返回id==R.id.action|u设置| | super.onOptionsItemSelected(项目);
}
按下公共无效ONGOBUTTON(视图){
意向意向=新意向(此,viptabaractivity.class);
星触觉(意向);
}
按下SelectContactButton上的公共无效(查看){
//联系人选取器,用于返回地址;将仅显示具有地址的联系人
意向意向=新意向(Intent.ACTION\u PICK,contacts contract.commondatatypes.StructuredPostal.CONTENT\u URI);
startActivityForResult(意向、选择联系人请求);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
//检查我们正在响应的请求
if(requestCode==选择联系人请求){
//确保请求成功
if(resultCode==RESULT\u OK){
//用户选择了一个联系人。
//意图的数据Uri标识选择了哪个联系人。
//获取指向所选联系人的URI
contactUri=data.getData();
//如果已选择联系人,则重新启动加载程序
loaderManager.destroyLoader(选择联系人请求);
//启动异步查询以获取联系人信息
initLoader(PICK_CONTACT_请求,null,this);
}否则{
//通过(用户未选择地址)
}
}
}
公共无效搜索地址(VoterInfo VoterInfo){
//在应用程序singleton上设置VoterInfo对象
应用程序setVoterInfo(voterInfo,选定方);
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
if(contactUri==null){
返回null;
}
字符串[]投影={ContactsContract.CommonDataTypes.StructuredPostal.FORMATTED_ADDRESS};
返回新的游标装入器(this、contactUri、projection、null、null、null);
}
@凌驾
public void onLoadFinished(加载器、光标数据){
if(data.getCount()>0){
data.moveToFirst();
//使用名为data1的单列获取结果
字符串地址=data.getString(0);
Log.d(“HomeActivity”,“Get cursor result:”+地址);
//设置在vi中找到的地址