最近根据别人提示的一个想法,东拼西凑,终于实现了android系统中只能看到自己的系统,我称之为唯一系统。
很多企业做设备或是做产品的或是集成商 其中的一部分设备直接用android智能机。担是又不让其它的应用干扰自己的应用,并想体现设备自己平台高融合性。所以就要求系统一启动就开始自己的应用,back 返回和home键最后都只能回到自己的应用主界面。
我就是根据这一构思东拼西凑了一个自己称之为唯一应用程序。
好了废话不多说了,现在讲讲怎么样我是怎么样拼凑的哈哈!因为刚接触android 所只能拼凑!
唯一应用关键在三个方面处理
1.开机自启动该应用
开机自启动需要写一个广播类继承BroadcastReceiver类 并注册
自定义广播类
public class BootBroadcastReceiver extends BroadcastReceiver {
static final String START_ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(START_ACTION)){
Intent appIntent = new Intent();
appIntent.setClass(context, MainActivity.class);
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(appIntent);
}
}
}
<receiver android:name="com.example.onlyapp.BootBroadcastReceiver"
android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
提示权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
2.对back返回键进行处理
在主界面对back返回处理 相信这个大多数人都会
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
Toast toast = Toast.makeText(getApplicationContext(), "您正处在唯一应用主界面,无法再退!",1);
toast.show();
return false;
}
return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);//这个方法是自己定义Activity基类里的 主要是为了统一处理处理home键事件
}
下面是Activity基类上CatchOnKeyDown方法代码
public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_HOME){
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.putExtra("come", "home");
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
3.对home键进行处理。
对home键处理 我这里写了一个基类供其它Activity继承代码如下:
public class OnlyAppActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//这个是对home键处理的方法
public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_HOME){
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.putExtra("come", "home");
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onAttachedToWindow() {//一定要实现这个方法并设置因为home是系统键
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
}
其它的Activity类继承OnlyAppActivity 这个类,并在重写的onKeyDown方法中调用CatchOnKeyDown这个方法
public class ThreeActivity extends OnlyAppActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.three);
textView = (TextView) findViewById(R.id.textView3);
textView.setText("欢迎来到唯一应用例子第三个界面");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);
}
}
详细源码可下载 http://download.youkuaiyun.com/detail/java_web_jsp0/6804709 本资源0分放心下载
很多企业做设备或是做产品的或是集成商 其中的一部分设备直接用android智能机。担是又不让其它的应用干扰自己的应用,并想体现设备自己平台高融合性。所以就要求系统一启动就开始自己的应用,back 返回和home键最后都只能回到自己的应用主界面。
我就是根据这一构思东拼西凑了一个自己称之为唯一应用程序。
好了废话不多说了,现在讲讲怎么样我是怎么样拼凑的哈哈!因为刚接触android 所只能拼凑!
唯一应用关键在三个方面处理
1.开机自启动该应用
开机自启动需要写一个广播类继承BroadcastReceiver类 并注册
自定义广播类
public class BootBroadcastReceiver extends BroadcastReceiver {
static final String START_ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(START_ACTION)){
Intent appIntent = new Intent();
appIntent.setClass(context, MainActivity.class);
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(appIntent);
}
}
}
系统注册:在AndroidManifest.xml中注册
<receiver android:name="com.example.onlyapp.BootBroadcastReceiver"
android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
提示权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
2.对back返回键进行处理
在主界面对back返回处理 相信这个大多数人都会
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
Toast toast = Toast.makeText(getApplicationContext(), "您正处在唯一应用主界面,无法再退!",1);
toast.show();
return false;
}
return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);//这个方法是自己定义Activity基类里的 主要是为了统一处理处理home键事件
}
下面是Activity基类上CatchOnKeyDown方法代码
public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_HOME){
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.putExtra("come", "home");
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
3.对home键进行处理。
对home键处理 我这里写了一个基类供其它Activity继承代码如下:
public class OnlyAppActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//这个是对home键处理的方法
public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_HOME){
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.putExtra("come", "home");
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onAttachedToWindow() {//一定要实现这个方法并设置因为home是系统键
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
}
其它的Activity类继承OnlyAppActivity 这个类,并在重写的onKeyDown方法中调用CatchOnKeyDown这个方法
public class ThreeActivity extends OnlyAppActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.three);
textView = (TextView) findViewById(R.id.textView3);
textView.setText("欢迎来到唯一应用例子第三个界面");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);
}
}
详细源码可下载 http://download.youkuaiyun.com/detail/java_web_jsp0/6804709 本资源0分放心下载