今天的任务为获取运行时权限,代码如下:
SingleFragmentActivity.java:
package com.bignerdranch.android.locatr; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; public abstract class SingleFragmentActivity extends AppCompatActivity { protected abstract Fragment createFragment(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragment_container); if (fragment == null) { fragment = createFragment(); fm.beginTransaction() .add(R.id.fragment_container, fragment) .commit(); } } }
LocatrFragment.java:
package com.bignerdranch.android.locatr; import android.app.Dialog; import android.content.DialogInterface; import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GoogleApiAvailability; public class LocatrActivity extends SingleFragmentActivity { private static final int REQUEST_ERROR = 0; @Override protected Fragment createFragment() { return LocatrFragment.newInstance(); } @Override protected void onResume() { super.onResume(); GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); int errorCode = apiAvailability.isGooglePlayServicesAvailable(this); if (errorCode != ConnectionResult.SUCCESS) { Dialog errorDialog = apiAvailability.getErrorDialog(this, errorCode, REQUEST_ERROR, new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialogInterface) { // Leave if services are unavailable. finish(); } }); errorDialog.show(); } } }