2015-09-17 36 views
0

我是新手android &我正在使用android-studio。我正在尝试构建一个可以将当前位置发送给我的朋友的应用程序。我下面developers.google.com,但是当我试图执行ConnectionCallbacks,无法实现ConnectionCallbacks,OnConnectionFailedListenerin主要活动

OnConnectionFailedListener在主要活动中它显示了这样的错误,

:cannot resolve symbol ConnectionCallbacks 
:cannot resolve symbol ConnectionCallbacks 

我试图改变:

public class MainActivity extends AppCompatActivity implements ConnectionCallbacks, OnConnectionFailedListener{ }; 

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

但没有帮助。

mainActivity.java 

package com.example.manju.helpme; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationServices; 

public class MainActivity extends AppCompatActivity implements ConnectionCallbacks, OnConnectionFailedListener{ 

/* called when user clicks ALERT! button*/ 


public void sendMessage(){ 

    String phoneNo = "1234567890"; 
    String message = "hi"; 
    SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(phoneNo, null, message, null, null); 

} 

protected synchronized void buildGoogleApiClient(){ 
    GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
} 

    @Override 
    public void onConnected(Bundle connectionHint) 
    { 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     if(mLastLocation != null){ 
       mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); 
      mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); 
     } 
    } 
} 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button btnAlert = (Button)findViewById(R.id.btn_Alert); 
    Button btnAddGuardian = (Button)findViewById(R.id.btn_Add_Guardian); 
    Button btnRemoveGuardian= (Button)findViewById(R.id.btn_Remove_Guardian); 



    btnAlert.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      sendMessage(); 
     } 
    }); 

    btnAddGuardian.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 


    btnRemoveGuardian.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@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(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

gradle.build 

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.0" 

defaultConfig { 
    applicationId "com.example.manju.helpme" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
compile 'com.android.support:appcompat-v7:23.0.0' 
compile 'com.google.android.gms:play-services:7.8.0' 
} 


androidManifest.xml 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.manju.helpme" > 


<uses-permission android:name="android.permission.SEND_SMS"> </uses-permission> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

<meta-data android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <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> 
    <activity 
     android:name=".Guardians" 
     android:label="@string/title_activity_guardians" 
     android:parentActivityName=".MainActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.manju.helpme.MainActivity" /> 
    </activity> 
</application> 

</manifest> 
+0

您可能要带,其电话号码,如果它是一个个人设备。 – akodiakson

+0

感谢队友,:-)我很着急。 –

+0

'GoogleApiClient'是否解决?你能从Play服务中导入任何东西吗? – akodiakson

回答

2

我们有ConnectionCallbacks实施OnConnectionSuspended消除这种误差,在此之前出现此错误 修改后的代码是:

mainActivity.java: 

package com.example.manju.helpme; 


import android.location.Location; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.google.android.gms.location.LocationServices; 

import org.w3c.dom.Text; 


public class MainActivity extends AppCompatActivity implements ConnectionCallbacks, OnConnectionFailedListener { 

/* called when user clicks ALERT! button*/ 

protected Location mLastLocation; 
protected TextView mLatitudeText; 
protected TextView mLongitudeText; 
protected GoogleApiClient mGoogleApiClient; 
protected static final String TAG = "basic-location-sample"; 


public void sendMessage() { 

    String phoneNo = "8152873220"; 
    String message = "hi"; 
    SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(phoneNo, null, message, null, null); 

} 

protected synchronized void buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 

} 
@Override 
protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

/** 
* Runs when a GoogleApiClient object successfully connects. 
*/ 
@Override 
public void onConnected(Bundle connectionHint) { 
    // Provides a simple way of getting a device's location and is well suited for 
    // applications that do not require a fine-grained location and that do not need location 
    // updates. Gets the best and most recent location currently available, which may be null 
    // in rare cases when a location is not available. 
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
    if (mLastLocation != null) { 
     mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); 
     mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); 
    } else { 
     Toast.makeText(this,"No location detected, Make sure that location is enabled in the device", Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // Refer to the javadoc for ConnectionResult to see what error codes might be returned in 
    // onConnectionFailed. 
    Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode()); 
} 


@Override 
public void onConnectionSuspended(int cause) { 
    // The connection to Google Play services was lost for some reason. We call connect() to 
    // attempt to re-establish the connection. 
    Log.i(TAG, "Connection suspended"); 
    mGoogleApiClient.connect(); 
} 






@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    buildGoogleApiClient(); 


    Button btnAlert = (Button)findViewById(R.id.btn_Alert); 
    Button btnAddGuardian = (Button)findViewById(R.id.btn_Add_Guardian); 
    Button btnRemoveGuardian= (Button)findViewById(R.id.btn_Remove_Guardian); 



    btnAlert.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      sendMessage(); 
     } 
    }); 

    btnAddGuardian.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 


    btnRemoveGuardian.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@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(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 
0

编辑:前缀ConnectionCallbacksGoogleApiClient

e.x.,GoogleApiClient.ConnectionCallbacks

老:

错字上OnConnectionFailedListenerin

应该OnConnectionFailedListener

+0

你可以导入'ConnectionCallbacks'吗? – akodiakson

+0

对不起,输入错误.. –