我已经在StackOverflow上研究了这个错误并尝试了所有的建议,但仍然有错误 . 应用程序尝试加载,我可以看到几个警报背后的主屏幕和应用程序关闭的错误 .

我试过的事情:

  • 加入清单 -

  • in MainActivity ,确保我使用“ this ”代替其他参考文献

  • 添加到 AlertDialog -

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

注意:我还在 setContentView(R.layout.activity_main); 之后的 MainActivity 中注释掉了所有内容,但仍然有错误 . 我怀疑这个问题与我如何使用我的片段和tjerk直接相关 . ActionSlideExpandableListView 菜单 .

我的代码: MainActivity

public class MainActivity extends Activity implements DataPasser {
    private final String LOGCAT = "MAINACTIVITY.LOGCAT";
    private DrawerLayout mDrawerLayout;
    Toolbar toolbar;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    Fragment fragment = null;
    // nav drawer title
    private CharSequence mDrawerTitle;

    // used to store app title
    private CharSequence mTitle;

    // slide menu items
    private String[] navMenuTitles;
    private TypedArray navMenuIcons;
    Menu menuMain;
    private ArrayList<NavDrawerItem> navDrawerItems;
    private NavDrawerListAdapter adapter;
    // --------------------------------------------------
    private final String PREF_NAME = "band_wit";
    String firstLaunch = "firstLaunch", itemPosition = "2";

    private TCPdump tcpdump = null;
    private TCPdumpHandler tcpDumpHandler = null;
    static public String local_Ip_Address;
    DBHelper dbHelper;
    FragmentManager fragmentManager;
    private MyReceiver receiver;

    private static final int VPN_REQUEST_CODE = 0x0F;
    private boolean waitingForVPNStart;

    public static String APP_UID;
    public static String NETFLIX_APP_UID;
    public static String FACEBOOK_APP_UID;

    private BroadcastReceiver vpnStateReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (LocalVPNService.BROADCAST_VPN_STATE.equals(intent.getAction())) {

                if (intent.getBooleanExtra("running", false))
                    waitingForVPNStart = false;

            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        dbHelper = DBHelper.newInstance(this);
        local_Ip_Address = getLocalIpAddress();

        // Local VPN
        LocalBroadcastManager.getInstance(this).registerReceiver(
                vpnStateReceiver,
                new IntentFilter(LocalVPNService.BROADCAST_VPN_STATE));

        // ====

         Intent tcp_Dump_Inent = new Intent(MainActivity.this,TcpDumpService.class);
         startService(tcp_Dump_Inent);
        /* start service for download manager */
         startService(new Intent(this, MyDownloaderMangerService.class));

        mTitle = mDrawerTitle = getTitle();
        // load slide menu items
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

        // nav drawer icons from resources
        navMenuIcons = getResources()
                .obtainTypedArray(R.array.nav_drawer_icons);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

        navDrawerItems = new ArrayList<NavDrawerItem>();

        // adding nav drawer items to array
        // Home

        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons
                .getResourceId(0, -1)));
        // Find People
        // Photos
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons
                .getResourceId(2, -1)));
        // Communities, Will add a counter here
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons
                .getResourceId(3, -1)));
        // Pages

        // Recycle the typed array
        navMenuIcons.recycle();

        mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

        // ** setting the nav drawer list adapter
        adapter = new NavDrawerListAdapter(this,
                navDrawerItems);
        mDrawerList.setAdapter(adapter);

        // enabling action bar app icon and behaving it as toggle button
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                toolbar,
                //R.drawable.ic_drawer,
                R.string.app_name,
                R.string.app_name)

        {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            // on first time display view for first nav item
            displayView(0);
        }

        startService(new Intent(this, MyService.class));
        // Run when application first time launched
        Const.preferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
        boolean isFirstTime = Const.preferences.getBoolean(firstLaunch, true);
        if (isFirstTime) {
            Const.preferences.edit().putBoolean(firstLaunch, false).commit();
            addBgData(Const.preferences);
            setInitialDataBucket();

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            LayoutInflater  inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = inflater.inflate(R.layout.splash_screen, null);
            builder.setView(view);
            dialog = builder.create();
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
            dialog.show();

        }

        APP_UID = myAppUid("com.oda.bandwit");
        NETFLIX_APP_UID = myAppUid("com.netflix.mediaclient");
        FACEBOOK_APP_UID = myAppUid("com.facebook.katana");

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub

        super.onResume();
        try {
            IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
            receiver = new MyReceiver();
            registerReceiver(receiver, filter);
        } catch (Exception e) {
            // TODO: handle exception
        }
        startVPN();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        try {
            unregisterReceiver(receiver);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

    /**
     * Slide menu item click listener
     * */
    private class SlideMenuClickListener implements
            ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // display view for selected nav drawer item
            displayView(position);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // toggle nav drawer on selecting action bar app icon/title
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        int fragment = 0;
        Fragment f = this.getFragmentManager().findFragmentById(
                R.id.frame_container);
        if (f instanceof HomeFragment) {
            fragment = 0;
        } else if (f instanceof GeneralSettingsFragment) {
            fragment = 1;
        } else if (f instanceof ApplicationSettinsFragment) {
            fragment = 2;
        } else if (f instanceof NetworkSettingsFragment) {
            fragment = 3;
        } else if (f instanceof GraphAnalysisFragment) {
            fragment = 4;
        }
        // Handle action bar actions click
        switch (item.getItemId()) {
        case R.id.menuToday:
            menuMain.findItem(R.id.menuSelectedItem).setTitle("Today");
            itemPosition = "0";
            displayView(fragment);
            return true;
        case R.id.menuThisWeek:
            menuMain.findItem(R.id.menuSelectedItem).setTitle("Current Week");
            itemPosition = "1";
            displayView(fragment);
            return true;
        case R.id.menuThisMonth:
            menuMain.findItem(R.id.menuSelectedItem).setTitle("Current Month");
            itemPosition = "2";
            displayView(fragment);
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }

    }

    /* *
     * Called when invalidateOptionsMenu() is triggered
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menuMain = menu;
        // if nav drawer is opened, hide the action items
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menuMain.findItem(R.id.menuToday).setVisible(!drawerOpen);
        menuMain.findItem(R.id.menuThisWeek).setVisible(!drawerOpen);
        menuMain.findItem(R.id.menuThisMonth).setVisible(!drawerOpen);
        menuMain.getItem(Integer.parseInt(itemPosition)).setChecked(true);
        return super.onPrepareOptionsMenu(menuMain);
    }

    /**
     * Diplaying fragment view for selected nav drawer list item
     * */


    private void displayView(int position) {
        // update the main content by replacing fragments

        switch (position) {
        case 0:
            try {
                fragment = new HomeFragment("" + itemPosition);
                callFragment(position);
            } catch (Exception e) {
                e.getMessage();
            }
            break;
        case 1:
            fragment = new ApplicationSettinsFragment();
            callFragment(position);

            break;
        case 2:
            startActivity(new Intent(MainActivity.this, GraphicalAnalysis.class));
            break;
        case 3:
            sendMail();

            break;
        case 4:
            dialog = new Dialog(MainActivity.this);
            Toast.makeText(MainActivity.this, "Change Limit", Toast.LENGTH_SHORT).show();
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Set Threshold");
            ListView list=new ListView(MainActivity.this);
            ArrayAdapter<String>adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,
                    new String[]{"5","10","15","20","25","30","35","40","45","50","55","60","65","70","75","80","85","90","95","100","105","110","115","120","125","130","135","140","145","150","155","160","165","170","175","180","185","190","195","200"});
            list.setAdapter(adapter);

            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                    Toast.makeText(MainActivity.this,
                            "Now Threshold " + (position + 1) * 5 +" is set",
                            Toast.LENGTH_SHORT).show();

                    LocalVPNService.netFlixMaxVal = (position + 1) * 5;
                    navDrawerItems.get(4).setCount(""+LocalVPNService.netFlixMaxVal);
                    MainActivity.this.adapter.notifyDataSetChanged();

                    if (dialog.isShowing()) {
                        dialog.dismiss();
                    }
                }
            });

            builder.setView(list);

            dialog=builder.create();
            dialog.show();

            break;
        case 5:
            fragment = new WhatsHotFragment();
            callFragment(position);

            break;

        default:
            break;
        }

    }
    Dialog dialog;          


    private void callFragment(int position) {
        if (fragment != null) {
            fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();
            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }

    }


    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == VPN_REQUEST_CODE && resultCode == RESULT_OK) {

            startService(new Intent(this, LocalVPNService.class));

        }
    }
}

Home Fragment

public class HomeFragment extends Fragment {

    Boolean checked;
    DBHelper dbHelper;
    String filterFlag = "", networkTypeSelected = "";
    CustomAdapter adap = null;
    OnClickListener clickListener;
    TextView tvNetworkType;
    SharedPreferences prefs;
    private static String FILENAME = "mlogs.txt";

    public HomeFragment() {
        // TODO Auto-generated constructor stub
    }

    public HomeFragment(String dataFilter) {
        filterFlag = dataFilter;
    }

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


        final View rootView = inflater.inflate(R.layout.fragment_home,
                container, false);
        prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());



        try {

            dbHelper = DBHelper.newInstance(getActivity());
            tvNetworkType = (TextView) rootView
                    .findViewById(R.id.tvNetworkTypeHome);
            clickListener = new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Editor edit = prefs.edit();
                    if (v.getId() == R.id.btnCellularHome) {
                        checked = false;
                        tvNetworkType.setText("Cellular Data");
                        edit.putString("network", "0");
                    } else if (v.getId() == R.id.btnWifiHome) {
                        checked = true;
                        tvNetworkType.setText("Wi-fi Data");
                        edit.putString("network", "1");
                    }
                    edit.commit();
                    setListViewData(rootView);

                }

            };

            rootView.findViewById(R.id.btnCellularHome).setOnClickListener(
                    clickListener);
            rootView.findViewById(R.id.btnWifiHome).setOnClickListener(
                    clickListener);
            if (prefs.getString("network", "0").equalsIgnoreCase("1")) {
                checked = true;
                tvNetworkType.setText("Wi-fi Data");
            } else {
                tvNetworkType.setText("Cellular Data");
                checked = false;
            }

            setListViewData(rootView);
        } catch (Exception e) {
            e.getMessage();
        }

        TextView ytdata = (TextView) rootView.findViewById(R.id.ytdata);
        TcpDumpUtills tcpDumpUtills = new TcpDumpUtills(getActivity());
        ytdata.setText(StringUtils.formatToMultiplier(tcpDumpUtills
                .getAppsConsumedData("com.google.android.youtube")));

        ytdata.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    File file = new File(Environment.getExternalStorageDirectory() + File.separator + "test.txt");
                      Process process = Runtime.getRuntime().exec("logcat -d");
                      BufferedReader bufferedReader = new BufferedReader(
                      new InputStreamReader(process.getInputStream()));

                      StringBuilder log=new StringBuilder();
                      String line;
                      while ((line = bufferedReader.readLine()) != null) {
                        log.append(line);
                      }

                      writeDataToFile(log.toString());
                    } catch (IOException e) {
                    }
            }
        });
        super.onSaveInstanceState(savedInstanceState);
        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        //mContext = activity;
    }

    public void  writeDataToFile(String data){
        // write on SD card file data in the text box
                try {
                    File myFile = new File("/sdcard/mysdfile.txt");
                    myFile.createNewFile();
                    FileOutputStream fOut = new FileOutputStream(myFile);
                    OutputStreamWriter myOutWriter = 
                                            new OutputStreamWriter(fOut);
                    myOutWriter.append(data);
                    myOutWriter.close();
                    fOut.close();
                    Toast.makeText(getActivity(),
                            "Done writing SD 'mysdfile.txt'",
                            Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    Toast.makeText(getActivity(), e.getMessage(),
                            Toast.LENGTH_SHORT).show();
                }
    }
    private void writeToFile(String data) {
        try {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(getActivity().openFileOutput(FILENAME, Context.MODE_PRIVATE));
            outputStreamWriter.write(data);
            outputStreamWriter.close();
        }
        catch (IOException e) {
            Log.e("Logss", "File write failed: " + e.toString());
        } 

    }
    public ListAdapter getData() {
        Resources res = getResources();
        ArrayList<ListModel> arr = new ArrayList<ListModel>();
        ArrayList<ListModel> arrFinal = new ArrayList<ListModel>();
        String networkType = "";

        if (checked) {
            networkType = "1";
        } else {
            networkType = "0";
        }

        PackageManager manager = getActivity().getPackageManager();
        arr = dbHelper.getAppsDataAccordingToNetworkType(networkType);

        if (arr.size() >= 1) {
            for (ListModel modelGetter : arr) {
                ListModel modelSetter = new ListModel();
                String packageName = modelGetter.getAppName();

                // Setting App Name
                try {
                    ApplicationInfo appInfo = manager.getApplicationInfo(
                            modelGetter.getAppName(), 0);
                    String appName = "" + manager.getApplicationLabel(appInfo);
                    modelSetter.setAppName(appName);

                    // Setting Total Data Consumned by the app
                    long appTotalData = getTotalDataPerApp(modelGetter
                            .getAppName());
                    modelSetter.setDataConsumed(appTotalData);
                    String appTotalDataStr = CommonFunctions
                            .humanReadableByteCount(appTotalData, false);
                    modelSetter.setTotalData(appTotalDataStr);

                    // Setting Total Data as per the network selected
                    long networkDataPerApp = getDailyNetworkDataPerApp(
                            modelGetter.getNetworkData(), packageName);
                    String networkDataStr = CommonFunctions
                            .humanReadableByteCount(networkDataPerApp, false);
                    modelSetter.setNetworkData(networkDataStr);

                    double percd = networkDataPerApp / (double) appTotalData
                            * 100;
                    int perc = (int) percd;
                    modelSetter.setPercenatge(perc);

                    // Setting App Icon
                    Drawable draw = manager.getApplicationIcon(modelGetter
                            .getAppName());
                    modelSetter.setDrawable(draw);

                    // Setting Today's Data
                    long appTodaysData = getUsageData(packageName);
                    String appTodayDataStr = CommonFunctions
                            .humanReadableByteCount(appTodaysData, false);
                    modelSetter.setTodaysData(appTodayDataStr);

                    Calendar cal = Calendar.getInstance();
                    long dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
                    long dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
                    long time = cal.get(Calendar.HOUR_OF_DAY);
                    long appConsumptionRate = getConsumptionRate(cal,
                            appTotalData);
                    String appConsumptionDataStr = CommonFunctions
                            .humanReadableByteCount(appConsumptionRate, false);
                    if (filterFlag.equalsIgnoreCase("0")) {
                        appConsumptionDataStr = appConsumptionDataStr + " /hr";
                    } else if (filterFlag.equalsIgnoreCase("1")) {
                        appConsumptionDataStr = appConsumptionDataStr + " /day";
                    }else if (filterFlag.equalsIgnoreCase("2")) {
                        appConsumptionDataStr = appConsumptionDataStr + " /day.";
                    }
                    modelSetter.setConsumptionRate(appConsumptionDataStr);

                    // Setting Forecast Data
                    long appForecastData = getForecastData(appConsumptionRate,
                            dayOfMonth, dayOfWeek, time, appTotalData);
                    String appForecastDataStr = CommonFunctions
                            .humanReadableByteCount(appForecastData, false);
                    modelSetter.setForecastData(appForecastDataStr);

                    arrFinal.add(modelSetter);
                } catch (Exception e) {
                    e.getMessage();
                }
            }

        } else {
            ListModel modelSetter = new ListModel();
            modelSetter.setAppName("No Data");
            modelSetter.setConsumptionRate("0.0 KB");
            modelSetter.setForecastData("0.0 KB");
            modelSetter.setNetworkData("0.0 KB");
            modelSetter.setTodaysData("0.0 KB");
            modelSetter.setTotalData("0.0 KB");
            arrFinal.add(modelSetter);
        }
        Collections.sort(arrFinal, new Comparator<ListModel>() {

            @Override
            public int compare(ListModel lhs, ListModel rhs) {
                // TODO Auto-generated method stub
                 return lhs.getDataConsumed() > rhs.getDataConsumed() ? -1
                         : lhs.getDataConsumed() < rhs.getDataConsumed() ? 1
                         : 0;
            }
        });
        adap = new CustomAdapter(getActivity(), arrFinal, res, networkType);
        adap.notifyDataSetChanged();
        return adap;

    }

    public void setListViewData(View view) {

        try {
            ListAdapter adap = getData();

            ActionSlideExpandableListView list = (ActionSlideExpandableListView) view
                    .findViewById(R.id.list);
            list.setAdapter(adap);
            list.setSmoothScrollbarEnabled(true);

            // listen for events in the two buttons for every list item.
            // the 'position' var will tell which list item is clicked

        } catch (Exception e) {
            e.getMessage();
        }

    }

    private long getTotalDataPerApp(String packageName) {

        String[] arr = CommonFunctions.getDateAccordingToDuration(filterFlag);

        String sDate = arr[0];
        String eDate = arr[1];
        long data = dbHelper.getDailyTotalDataPerApp(sDate, eDate, packageName);
        return data;
    }

    private long getDailyNetworkDataPerApp(String networkType,
            String packageName) {

        String[] arr = CommonFunctions.getDateAccordingToDuration(filterFlag);

        String sDate = arr[0];
        String eDate = arr[1];
        long data = dbHelper.getDailyNetworkDataPerApp(sDate, eDate,
                networkType, packageName);
        return data;
    }

    private long getUsageData(String packageName) {
        String[] arr = CommonFunctions.getDateAccordingToDuration(filterFlag);

        String sDate = arr[0];
        String eDate = arr[1];

        long data = dbHelper.getDailyTotalDataPerApp(sDate, eDate, packageName);
        return data;
    }

    private long getForecastData(long cRate, long dayOfMonth, long dayOfWeek,
            long time, long appTotalData) {
        long output = 0;
        if (filterFlag.equalsIgnoreCase("0")) {
            output = (cRate * (24 - time)) + appTotalData;
        } else if (filterFlag.equalsIgnoreCase("1")) {
            long leftDaysOfWeek = 7 - dayOfWeek;
            output = (cRate * leftDaysOfWeek) + appTotalData;
        } else if (filterFlag.equalsIgnoreCase("2")) {
            long leftDaysOfMonth = 31 - dayOfMonth;
            output = (cRate * leftDaysOfMonth) + appTotalData;
        }

        return output;
    }

    private long getConsumptionRate(Calendar cal, long totalData) {
        long output = 0;
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int time = cal.get(Calendar.HOUR_OF_DAY);

        if (filterFlag.equalsIgnoreCase("0")) {
            output = totalData / time;
        } else if (filterFlag.equalsIgnoreCase("1")) {
            output = totalData / dayOfWeek;
        } else if (filterFlag.equalsIgnoreCase("2")) {
            output = totalData / dayOfMonth;
        }

        return output;
    }

    public ListAdapter buildDummyData() {
        final int SIZE = 20;
        String[] values = new String[SIZE];
        for (int i = 0; i < SIZE; i++) {
            values[i] = "Item " + i;
        }
        return new ArrayAdapter<String>(getActivity(),
                R.layout.expandable_list_item, R.id.tvAppName, values);
    }

}

Crash Log 11-19 21:33:24.010 12557-12557 / com.oda.bandwit E / AndroidRuntime:FATAL EXCEPTION:main进程:com.oda.bandwit,PID:12557 android.view.WindowManager $ BadTokenException:无法添加窗口 - - 令牌null不适用于android.view.WindowManagerImpl.addView(WindowManagerImpl.java)上android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)的android.view.ViewRootImpl.setView(ViewRootImpl.java:682)上的应用程序:93)在android.app.Dialog.show(Dialog.java:316)的android.app.AlertDialog $ Builder.show(AlertDialog.java:1112)com.oda.bandwit.TcpDumpService.startTCPdump(TcpDumpService.java: 98)at com.oda.bandwit.TcpDumpService.access $ 000(TcpDumpService.java:22)at com.oda.bandwit.TcpDumpService $ 1.run(TcpDumpService.java:62)at android.os.Handler.handleCallback(Handler.java) :751)在Android.os.Handler.dispatchMessage(Handler.java:95)的android.app.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6077)在java .lang.reflect.Method.in com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)中的voke(Native Method)