所以我想制作一个浮动的应用程序,点击它会停止位置。 这是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>
答案 0 :(得分:0)
问题是您需要从某些活动启动服务。服务不会自动启动。要启动该服务,请创建一个活动。让我们说活动A.现在在布局中可以说有一个按钮。 单击按钮,您需要使用startService启动服务(new Intent(this,MainActivity.class))
现在应该在清单中将A声明为启动器活动。
答案 1 :(得分:0)
没有启动器活动你就无法申请!!! 因为它需要一种方法来启动你的服务......在这里它没有一个.. 此外,您不能使用任何类型的广播接收器,如BOOT_COMPELETED来启动您的服务,因为从Android 3.0开始,您的应用程序应至少启动一次以接收任何类似的广播.. 所以如果你有一个启动器活动会更好,虽然你并不需要它。你可以从那个活动开始你的服务并完成它。 一旦您的服务开始,您就可以准备好聊天室了!