android 关机闹钟

lifewu 发布于 2012/11/08 13:37
阅读 1K+
收藏 0

刚接触android,准备写一个点击列表的一个item关机的例子,但是点击之后总是关不掉,应该怎么实现关机,贴出来大家指点一下。

先是主的MainActivity

package com.example.shutdown;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.ListActivity;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;


public class MainActivity extends ListActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);


SimpleAdapter sa = new SimpleAdapter(this, getdata(), 
R.layout.activity_main, new String[]{"title","explay"},new int[]{R.id.text01,R.id.text02});
setListAdapter(sa);
}


    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO 自动生成的方法存根
    super.onListItemClick(l, v, position, id);
    if(0==id)
    {
    System.out.println("begin shutdown!");
    item_shutdown();
    System.out.println("shutdown error!");
    }
}


private void item_shutdown() {
// TODO 自动生成的方法存根
AlarmManager alarm = (AlarmManager) this.getSystemService(this.ALARM_SERVICE);
PendingIntent pendingintent = PendingIntent.getService(this, 0, new Intent(this,ShutdownService.class), 0);
alarm.set(AlarmManager.ELAPSED_REALTIME, 1000, pendingintent);
}


private List< Map<String, Object>> getdata() {
// TODO 自动生成的方法存根


    List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    for(int i=0;i<5;i++)
    {
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("title", "定时关机");
    map.put("explay","3rd school");
    list.add(map);
    }
    System.out.println("list item get data end!");
    return list;




}




@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //getMenuInflater().inflate(R.menu.activity_main, menu);
menu.add(0, 1, 1, "退出");
menu.add(0, 2, 1, "关于");
        return true;
    }



@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO 自动生成的方法存根
switch (item.getItemId())
{
case 1:
finish();
break;
case 2:
Toast.makeText(MainActivity.this, "v1.0", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(MainActivity.this, "menuitem error!", Toast.LENGTH_SHORT).show();

}
return super.onOptionsItemSelected(item);
}



}

在就是启动service之后的shutdownservice


package com.example.shutdown;


import android.app.Service;
import android.content.Intent;
import android.os.IBinder;


public class ShutdownService extends Service {
    public ShutdownService() {
    }


    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }


@Override
public void onStart(Intent intent, int startId) {
// TODO 自动生成的方法存根
   //Intent intent2 = new Intent();  
   // intent.setAction("android.intent.action.ACTION_SHUTDOWN");
   sendBroadcast(intent); 
super.onStart(intent, startId);
}
    
    
    
    
}


加载中
0
l
lifewu
运行之后,点击就意外停止了,不知道为什么,修改的话应该怎么修改实现关机?
l
lifewu
回复 @红薯 : logcat我看过了,意外退出我知道怎么改,但是关机这个动作,我不知道怎么实现,在网上找的都说要root和android的源码,还有别的实现方法么?
红薯
红薯
任何意外信息都可以通过 logcat 来看到哦
0
c
caipeng
有没有在Manifest里面注册权限?
返回顶部
顶部