我是Android开发的新手。所以原谅这个重复的问题。我已经尝试了很多这方面的解决方案,但似乎没有一个适合我...他们都在模拟器和手机上崩溃。
我正在使用某个应用程序,只想获取我的GPS位置,然后将名为“big”的TextView设置为该位置的值。
继承代码。 (我有我的代码中的import语句和所有内容。我只是没有复制它们
GPSActivity //开始的活动。 textview R.id.big确实存在
public class GPSActivity extends Activity{
private LocationManager manager = null;
private MyLocationListener listener;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listener = new MyLocationListener(textView);
textView = (TextView) findViewById(R.id.big);
manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
listener = new MyLocationListener(textView);
manager.requestLocationUpdates(LocationManager
.GPS_PROVIDER, 5000, 10,listener);
}
}
我实现了自己的LocationListener,它改变了我的TextView ......我不确定我是否真的被允许这样做....
public class MyLocationListener implements LocationListener
{
TextView textView;
public MyLocationListener(TextView textView)
{
this.textView = textView;
}
@Override
public void onLocationChanged(Location location) {
this.textView.setText(location.toString());
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
最后是我的清单文件。我确保包含我需要的权限。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mytestapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
<activity
android:name="com.mytestapp.GPSActivity"
android:permission="ACCESS_FINE_LOCATION"
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>
当我致电GPSActivity
时,问题出现在requestLocationUpdates()
。如果我在代码中留下这一行,应用程序崩溃了。如果我将它评论出来,TextView的“大”显示就像我期望的那样。
编辑:我也尝试创建一个LocationListener
作为内部类,就像我看到很多其他人做的那样...而且我有相同的结果(应用程序崩溃)
答案 0 :(得分:0)
除了ACCESS_FINE_LOCATION权限外,尝试添加 ACCESS_GPS
他们应该看起来像这样......
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
答案 1 :(得分:0)
添加
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
到您的manifest.xml文件。
答案 2 :(得分:0)
使用GPS或WiFi使用完全支持Geolocation:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
对于不支持使用gps的设备:
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />