活动未找到android

时间:2016-02-13 08:26:57

标签: java android

所以我想制作一个浮动的应用程序,点击它会停止位置。 这是MainActivity类

 public class MainActivity extends Service {

private WindowManager windowManager;
private ImageView chatHead;



@Override public void onCreate() {
    super.onCreate();

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    chatHead = new ImageView(this);
    chatHead.setImageResource(R.mipmap.ic_launcher);

    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.TOP | Gravity.LEFT;
    params.x = 0;
    params.y = 100;

    windowManager.addView(chatHead, params);

    chatHead.setOnTouchListener(new View.OnTouchListener() {
        private int initialX;
        private int initialY;
        private float initialTouchX;
        private float initialTouchY;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    initialX = params.x;
                    initialY = params.y;
                    initialTouchX = event.getRawX();
                    initialTouchY = event.getRawY();
                    return true;
                case MotionEvent.ACTION_UP:
                    return true;
                case MotionEvent.ACTION_MOVE:
                    params.x = initialX + (int) (event.getRawX() - initialTouchX);
                    params.y = initialY + (int) (event.getRawY() - initialTouchY);
                    windowManager.updateViewLayout(chatHead, params);
                    return true;
            }
            return false;
        }
    });
    chatHead.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this,LocationService.class);
            startService(intent);

        }
    });
}

@Override
public void onDestroy() {
    super.onDestroy();
    if (chatHead != null) windowManager.removeView(chatHead);
}



@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
}

在清单中,我已将MainActivity设置为服务。现在,当我尝试运行应用程序时,它显示错误

无法识别启动活动:找不到默认活动

这是什么问题?我的意思是我知道没有活动,我打算没有活动,因为它是一项服务(一个浮动的应用程序)。 怎么做

---------------------------------- EDIT ------------ ------------------------ 清单文件

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <service
        android:name=".MainActivity"
        android:label="@string/app_name">

    </service>
    <service android:name=".LocationService"/>

</application>

2 个答案:

答案 0 :(得分:0)

问题是您需要从某些活动启动服务。服务不会自动启动。要启动该服务,请创建一个活动。让我们说活动A.现在在布局中可以说有一个按钮。 单击按钮,您需要使用startService启动服务(new Intent(this,MainActivity.class))

现在应该在清单中将A声明为启动器活动。

答案 1 :(得分:0)

没有启动器活动你就无法申请!!! 因为它需要一种方法来启动你的服务......在这里它没有一个.. 此外,您不能使用任何类型的广播接收器,如BOOT_COMPELETED来启动您的服务,因为从Android 3.0开始,您的应用程序应至少启动一次以接收任何类似的广播.. 所以如果你有一个启动器活动会更好,虽然你并不需要它。你可以从那个活动开始你的服务并完成它。 一旦您的服务开始,您就可以准备好聊天室了!