![](/img/trans.png)
[英]How to specify path of AndroidManifest.xml file in <gettype> ant target?
[英]How to specify a wrapper class in AndroidManifest.xml
我已经在Android Studio中设置了标准的Maps Activity。 然后,我需要添加一个“包装器”类,以便实现与MapsActivity的OnMapReadyCallback不同的类。 该包装器类没有视觉组件,因此不应创建View,然后只需调用MapsActivity即可创建地图视图。
一切都可以编译,但是运行时不会显示任何视图。
如果在创建映射后将退出循环程序从处置移至MReady,那么我只会在日志中获得以下行。
E / ConnectivityService:RemoteException异常,试图为NetworkRequest发送回调消息[id = 10,legacyType = -1,[功能:INTERNET&NOT_RESTRICTED&TRUSTED]]
但是仍然看不到任何视图。 下面的代码已更新为最新。 尽管设置为冗长,但Log.d / i消息也没有出现在日志中。
代码-AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.booxotel.smallgminterface">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name = ".SmallMap">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name="com.booxotel.smallgminterface.MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
SmallMap.java(的一部分)
public class SmallMap extends Application implements FREExtension {
public static final String TAG = "MapInterface";
private static GoogleMap gMap;
private static LatLng cmap;
private static MarksData md;
private Handler mHandler;
public static FREContext extensionContext;
public static Context appContext;
public static SettingsContentObserver mSettingsWatcher;
public ShowMap shm;
@Override
public void onCreate() {
super.onCreate();
appContext = getApplicationContext();
}
public class ShowMap extends Thread {
ShowMap() {
prepareThread(false);
}
public void prepareThread(Boolean quit){
Log.i(TAG, "prepare thread");
if (gMap == null && !quit) {
Looper.prepare();
mHandler = new Handler();
Intent intent = new Intent(SmallMap.appContext, MapsActivity.class);
appContext.startActivity(intent);
}else if(quit) {
Looper.myLooper().quit();
}
Looper.loop();
}
}
public class MReady implements MapReadyEvent {
@Override
public void MapReady() {
gMap = MapsActivity.getMap();
shm.prepareThread(true);
Log.i(TAG, "map ready");
extensionContext.dispatchStatusEventAsync("mapReady", "true");
}
}
@Override
public FREContext createContext(String contextType) {
shm = new ShowMap();
shm.prepareThread(false);
return new MapInterfaceContext();
}
@Override
public void dispose() {
Log.d(TAG, "Extension disposed.");
Context context = appContext.getApplicationContext();
context.getContentResolver().unregisterContentObserver(mSettingsWatcher);
appContext = null;
extensionContext = null;
mSettingsWatcher = null;
}
@Override
public void initialize() {
Log.d(TAG, "Extension initialized.");
}
}
MapsActivity.java
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
public static GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
MapReadyEvent mre = new MapReadyEvent() {
@Override
public void MapReady() {}
};
mre.MapReady();
}
public static GoogleMap getMap() {
return mMap;
}
}
MapReadyEvent.java
public interface MapReadyEvent {
void MapReady();
}
activity_maps.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="311dp"
android:layout_height="290dp"
android:layout_marginLeft="710dp"
android:layout_marginTop="167dp"
tools:context="com.mysite.testmap.MapsActivity" />
</RelativeLayout>
在主线程上不会调用startActivity
。 使用此代替:
mHandler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SmallMap.appContext, MapsActivity.class);
appContext.startActivity(intent);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.