在stackoverflow上搜索了很多解决方案后,没有任何帖子可以帮助我。 我改变了指纹,我在清单中写道:
<meta-data
android:name="com.google.geo.API_KEY"
android:value="@string/google_api_key1" />
我将此代码添加到我的片段中:
@Override
public void showEditAddress() {
try {
Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
.build(getActivity());
startActivityForResult(intent, Constants.PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
// TODO: Handle the error.
Log.e(TAG, "Show error: " + e.toString());
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.PLACE_AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
Place place = PlaceAutocomplete.getPlace(getContext(), data);
Log.i(TAG, "Place: " + place.getName());
} else if (resultCode == PlaceAutocomplete.RESULT_ERROR) {
Status status = PlaceAutocomplete.getStatus(getContext(), data);
// TODO: Handle the error.
Log.e(TAG, "Error Places: " + status.toString());
} else if (resultCode == Activity.RESULT_CANCELED) {
// The user canceled the operation.
}
}
}
但是在显示谷歌迷恋的活动之后,我正在努力工作几天并没有任何作用:(
这是我从控制台得到的:
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: ViewPostImeInputStage processPointer 0
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: ViewPostImeInputStage processPointer 1
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: MSG_WINDOW_FOCUS_CHANGED 0
teame.co.il.team_e V/FA: Recording user engagement, ms: 7599
teame.co.il.team_e V/FA: Connecting to remote service
teame.co.il.team_e V/FA: Activity paused, time: 431544392
teame.co.il.team_e D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=7599, firebase_screen_class(_sc)=MyProfileActivity, firebase_screen_id(_si)=4880950556395788363}]
teame.co.il.team_e V/FA: Connection attempt already in progress
teame.co.il.team_e D/FA: Connected to remote service
teame.co.il.team_e V/FA: Processing queued up service tasks: 2
teame.co.il.team_e D/InputTransport: Input channel destroyed: fd=109
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 63 - 0, 834) vi=Rect(0, 63 - 0, 834) or=1
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: Relayout returned: oldFrame=[0,0][1080,2220] newFrame=[0,0][1080,2220] result=0x1 surface={isValid=true 508726705152} surfaceGenerationChanged=false
teame.co.il.team_e D/ScrollView: onsize change changed
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: MSG_WINDOW_FOCUS_CHANGED 1
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: mHardwareRenderer.initializeIfNeeded()#2 mSurface={isValid=true 508726705152}
teame.co.il.team_e V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@d2f12df nm : teame.co.il.team_e ic=null
teame.co.il.team_e I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
teame.co.il.team_e D/InputTransport: Input channel constructed: fd=109
teame.co.il.team_e E/MyProfileFragment: Error Places: Status{statusCode=ERROR, resolution=null} //The Error from the log
teame.co.il.team_e V/FA: Activity resumed, time: 431544700
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 63 - 0, 126) vi=Rect(0, 63 - 0, 126) or=1
teame.co.il.team_e D/ViewRootImpl@d7aa753[MyProfileActivity]: Relayout returned: oldFrame=[0,0][1080,2220] newFrame=[0,0][1080,2220] result=0x1 surface={isValid=true 508726705152} surfaceGenerationChanged=false
teame.co.il.team_e D/ScrollView: onsize change changed
teame.co.il.team_e V/FA: Inactivity, disconnecting from the service
我的谷歌api控制台的重建图片:
答案 0 :(得分:0)
在您的控制台中,我们可以看到MyProfileActivity
活动正在不断调用Relayout
。
这些电话在电话上非常沉重。
当应用程序达到手机内存限制时,操作系统会自动崩溃应用程序。
这就是您的应用程序不断崩溃的原因。
另请注意,行为可能取决于电话。虽然错误的代码会堵塞线程,但如果您使用的是具有更高规格的手机,那么应用可能会滞后并被冻结或无响应,而在规格较低的手机上,应用程序会崩溃。
要解决此问题,请检查MyProfileActivity
以查找因任何原因而不断调用的任何侦听器。
可能的原因是您拥有请求在Google地图侦听器中调用的位置权限的代码。
提示:检查onResume()
监听器。如果您有权限检查器不断要求许可,并且您必须单击“不再询问”并拒绝该权限,它将不断拨打操作系统的电话以请求许可。
在电话上,转到Settings -> Apps
。从列表中选择您的应用程序。向下滚动到App Settings
部分,然后点击Permissions
。启用应用程序的所有权限。然后,尝试运行您的应用。如果您的应用程序没有崩溃,那么您将发现问题的原因是从操作系统请求权限的持续隐藏调用。
永久性修复是将调用权限请求或从调用者调用的任何其他内容(例如onResume
)移动到不经常调用或仅调用一次的某个地方,例如{ {1}}。优雅的解决方案是记住用户的偏好,而不是每次加载地图时都要求他们,所以如果他们想要启用位置权限,他们必须通过手机的“设置”应用,或者甚至从“手机”中的“设置”菜单启用位置权限。应用