最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android如何在App中啟動系統(tǒng)鬧鐘

 更新時間:2018年01月25日 10:12:47   作者:cxc19890214  
這篇文章主要為大家詳細介紹了Android如何在App中啟動系統(tǒng)鬧鐘,具有一定的參考價值,感興趣的小伙伴們可以參考一下

由于不同Android手機廠商提供的系統(tǒng)鬧鐘包名都不一致,所以只能通過過濾當前手機所有的應用,以確定鬧鐘應用的包名,進而啟動它。

這里采用的過濾規(guī)則是:系統(tǒng)應用 && 應用的PackageName包含"widget" 和 "clock"

1、布局文件  activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:paddingBottom="@dimen/activity_vertical_margin" 
  android:paddingLeft="@dimen/activity_horizontal_margin" 
  android:paddingRight="@dimen/activity_horizontal_margin" 
  android:paddingTop="@dimen/activity_vertical_margin" 
  tools:context=".MainActivity"> 
 
  <Button 
    android:id="@+id/start_system_clock_bt" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="啟動系統(tǒng)鬧鐘" /> 
 
</RelativeLayout> 

2、MainActivity.java

package com.demo.cxc.systemclocksample; 
 
import android.content.Intent; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageInfo; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
 
import java.util.ArrayList; 
import java.util.List; 
 
public class MainActivity extends AppCompatActivity { 
  private Button startSystemClockButton = null; 
 
 
  private List<PackageInfo> allPackageInfos;//系統(tǒng)安裝所有軟件 
  private List<PackageInfo> clockPackageInfos;//系統(tǒng)時鐘軟件 
 
  private static final int HANDLE_MESSAGE_KEY = 1001; 
  private Handler myHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      super.handleMessage(msg); 
      if (msg != null) { 
        switch (msg.what) { 
          case HANDLE_MESSAGE_KEY: 
            Toast.makeText(getApplicationContext(), "--app scan over--", Toast.LENGTH_SHORT).show(); 
            Log.d("CXC", "--app scan over--"); 
            break; 
 
          default: 
            break; 
 
        } 
 
      } 
 
    } 
  }; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    initViews(); 
    initData(); 
 
    //begin scan installed applications; 
    //// TODO: 16/1/15 
    new Thread(new ScanInstalledAppsRunnable()).start(); 
  } 
 
  private void initViews() { 
    startSystemClockButton = (Button) findViewById(R.id.start_system_clock_bt); 
    startSystemClockButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        //// TODO: 16/1/15 
        startSystemClock(); 
      } 
    }); 
  } 
 
  private void initData() { 
    clockPackageInfos = new ArrayList<PackageInfo>(); 
  } 
 
 
  class ScanInstalledAppsRunnable implements Runnable { 
    @Override 
    public void run() { 
      allPackageInfos = getPackageManager() 
          .getInstalledPackages(0); 
 
      if (allPackageInfos == null || allPackageInfos.size() == 0) { 
        //// TODO: 16/1/15 todo nothing 
        return; 
      } 
 
      if (clockPackageInfos == null) { 
        clockPackageInfos = new ArrayList<PackageInfo>(); 
      } 
 
      PackageInfo tempPackageInfo = null; 
      for (int i = 0; i < allPackageInfos.size(); i++) { 
        tempPackageInfo = allPackageInfos.get(i); 
        if (tempPackageInfo != null) { 
 
          if (isSystemApplication(tempPackageInfo.applicationInfo) && 
              isClockApplication(tempPackageInfo.packageName)) { 
            clockPackageInfos.add(tempPackageInfo); 
          } 
 
        } 
      } 
 
 
      Message message = myHandler.obtainMessage(); 
      message.what = MainActivity.HANDLE_MESSAGE_KEY; 
      myHandler.sendMessage(message); 
    } 
  } 
 
 
  private boolean isSystemApplication(ApplicationInfo applicationInfo) { 
    boolean isSystemApp = false; 
    if (applicationInfo != null) { 
      if ((applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0 
          || (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { 
        isSystemApp = true; 
 
      } 
    } 
    return isSystemApp; 
  } 
 
 
  private boolean isClockApplication(String packageName) { 
    boolean isClockApp = false; 
    if (packageName != null && packageName.contains("clock") && !packageName.contains("widget")) { 
      isClockApp = true; 
    } 
    return isClockApp; 
  } 
 
  private void startSystemClock() { 
    if (clockPackageInfos == null || clockPackageInfos.size() == 0) { 
      Toast.makeText(getApplicationContext(), "--啟動系統(tǒng)鬧鐘失敗1--", Toast.LENGTH_SHORT).show(); 
      return; 
    } 
 
    Log.d("CXC", "---clock package size :" + clockPackageInfos.size()); 
    Log.d("CXC", "---clock package [0] :" + clockPackageInfos.get(0).packageName); 
    try { 
      Intent startSysClockIntent = getPackageManager().getLaunchIntentForPackage(clockPackageInfos.get(0).packageName); 
      startActivity(startSysClockIntent); 
    } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "--啟動系統(tǒng)鬧鐘失敗2--", Toast.LENGTH_SHORT).show(); 
    } 
 
 
  } 
 
} 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android實現搜索本地音樂的方法

    Android實現搜索本地音樂的方法

    這篇文章主要為大家詳細介紹了Android實現搜索本地音樂的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔

    Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔

    今天小編就為大家分享一篇關于Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Android仿新版微信浮窗效果

    Android仿新版微信浮窗效果

    在新版微信中,可以把瀏覽的文章縮小為浮窗.點擊浮窗繼續(xù)閱讀.這篇文章主要介紹了Android仿新版微信浮窗效果,需要的朋友可以參考下
    2018-06-06
  • 詳談Matrix中preTranslate()和postTranslate()的理解

    詳談Matrix中preTranslate()和postTranslate()的理解

    這篇文章主要為大家詳細介紹了Matrix中preTranslate()和postTranslate()的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android進程間使用Intent進行通信

    Android進程間使用Intent進行通信

    Android進程間通信(IPC,Inter-Process Communication)底層采用的是 Binder 機制,具體到應用層有網友根據安卓四大組件將進程間通信方式分為對應的四種方式 Activity, Broadcast, ContentProvider, Service
    2023-02-02
  • android開發(fā)環(huán)境搭建詳解(eclipse + android sdk)

    android開發(fā)環(huán)境搭建詳解(eclipse + android sdk)

    這篇文章主要介紹了android開發(fā)環(huán)境搭建詳解(eclipse + android sdk),需要的朋友可以參考下
    2014-05-05
  • 一文搞懂Android RecyclerView點擊展開、折疊效果的實現代碼

    一文搞懂Android RecyclerView點擊展開、折疊效果的實現代碼

    雖然在日常開發(fā)中已經多次接觸過RecycleView,但也只是用到其最基本的功能,并沒有深入研究其他內容。接下來將抽出時間去了解RecycleView的相關內容,這篇文章主要是介紹Android RecyclerView點擊展開、折疊效果的實現方式,一起看看吧
    2021-06-06
  • Android雙擊事件攔截方法

    Android雙擊事件攔截方法

    下面小編就為大家分享一篇Android雙擊事件攔截方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android安裝應用 INSTALL_FAILED_DEXOPT 問題及解決辦法

    Android安裝應用 INSTALL_FAILED_DEXOPT 問題及解決辦法

    這篇文章主要介紹了Android安裝應用 INSTALL_FAILED_DEXOPT 解決辦法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Android數據庫LitePal的基本用法詳解

    Android數據庫LitePal的基本用法詳解

    這篇文章主要介紹了Android數據庫LitePal的基本用法詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

梅州市| 西平县| 丽江市| 丹棱县| 伊吾县| 阿巴嘎旗| 庄浪县| 白河县| 辽阳县| 于都县| 晋宁县| 贵南县| 班玛县| 邵东县| 宣恩县| 新干县| 阳江市| 阜平县| 雷州市| 同德县| 克什克腾旗| 仁化县| 乐东| 美姑县| 甘孜| 建宁县| 定结县| 怀来县| 宣威市| 定陶县| 洪湖市| 高阳县| 南川市| 静乐县| 新龙县| 江津市| 宁城县| 常山县| 八宿县| 淄博市| 阳曲县|