1

This is crazy. I can start call from within an activity, but can't from within a fragment.

package com.teslaqubitsins.fasih.teslahcm;


import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;



public class LocationDetailFragment extends Fragment {
    public static Location LOCATION;
    TextView _campusName;
    TextView _campusAddress;
    TextView _campusPhone;
    View parentView;

    public LocationDetailFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        parentView = inflater.inflate(R.layout.fragment_location_detail, container, false);
        _campusName = (TextView) parentView.findViewById(R.id.campus_name);
        _campusAddress = (TextView) parentView.findViewById(R.id.campus_address);
        _campusPhone = (TextView) parentView.findViewById(R.id.campus_phone);

        _campusName.setText("Campus Name:\n" + LOCATION.getLocation_name());
        _campusAddress.setText("\n\nCampus Address:\n" + LOCATION.getLocation_address());
        _campusPhone.setText("\n\nCampus Phone:\n" + LOCATION.getLocation_phone());
        setUpViews();
        return parentView;

    }
    private void setUpViews() {
        parentView.findViewById(R.id.callbutton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
                alertDialog.setTitle("Boss, really?");
                alertDialog.setMessage(LOCATION.getLocation_phone());
                alertDialog.setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                                int which) {
                                dialog.cancel();
                            }
                        });
                alertDialog.setPositiveButton("Yes, make the call",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                                int which) {
                                Intent callIntent = new Intent(Intent.ACTION_CALL);
                                callIntent.setData(Uri.parse("tel:" + LOCATION.getLocation_phone()));
                                callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                                LocationDetailFragment.this.startActivity(callIntent);

                            }
                        });
                alertDialog.show();
            }
        });

Here's the crash data

04-23 22:12:08.177 2001-2278/com.google.android.gms.persistent W/GCoreFlp: No location to return for getLastLocation() 04-23 22:21:05.030 19253-19253/com.teslaqubitsins.fasih.teslahcm E/AndroidRuntime: FATAL EXCEPTION: main Process: com.teslaqubitsins.fasih.teslahcm, PID: 19253 java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxxx flg=0x10000000 cmp=com.android.server.telecom/.components.UserCallActivity } from ProcessRecord{54750a4 19253:com.teslaqubitsins.fasih.teslahcm/u0a75} (pid=19253, uid=10075) with revoked permission android.permission.CALL_PHONE at android.os.Parcel.readException(Parcel.java:1684) at android.os.Parcel.readException(Parcel.java:1637) at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3101) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518) at android.app.Activity.startActivityForResult(Activity.java:4225) at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:30) at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:146) at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:932) at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1047) at android.support.v4.app.Fragment.startActivity(Fragment.java:940) at android.support.v4.app.Fragment.startActivity(Fragment.java:929) at com.teslaqubitsins.fasih.teslahcm.LocationDetailFragment$1$2.onClick(LocationDetailFragment.java:69) at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 04-23 22:21:05.919 2001-2278/com.google.android.gms.persistent W/GCoreFlp: No location to return for getLastLocation()

theLuckyOne
  • 262
  • 3
  • 20

0 Answers0