搜尋此網誌

2016年4月18日 星期一

Android 6 以上的版本加上GPS地圖定位授權要求

Android 6 以上的版本在要求授權的時候是在使用該權限的當下跳出來詢問的,例如取得GPS時就會在當下需要去檢查是否有經過授權。
如果我們沒有特別提供授權的功能的話,使用者是無法使用的,除非去 Android 的應用程式設定去將定位打開(不是開啟手機的定位功能喔!)是應用程式自己可以使用定位的授權。


早期我們要取得定位服務只需要
lms = (LocationManager) getSystemService(LOCATION_SERVICE);
但是在 android 6 之後,android studio 就會要求我們要做檢查的動作:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            //如果沒有授權使用定位就會跳出來這個
            // TODO: Consider calling

            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.

            requestLocationPermission(); // 詢問使用者開啟權限
            return;
        }
如果權限沒有被開啟就會直接被 return
所以我們必須多做一段這個:
private void requestLocationPermission() {
        // 如果裝置版本是6.0(包含)以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // 取得授權狀態,參數是請求授權的名稱
            int hasPermission = checkSelfPermission(
                    Manifest.permission.ACCESS_FINE_LOCATION);

            // 如果未授權
            if (hasPermission != PackageManager.PERMISSION_GRANTED) {
                // 請求授權
                //     第一個參數是請求授權的名稱
                //     第二個參數是請求代碼
                requestPermissions(
                        new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                        REQUEST_FINE_LOCATION_PERMISSION);
            }
            else {
                // 啟動地圖與定位元件

            }
        }
    }
private static final int REQUEST_FINE_LOCATION_PERMISSION = 102;
Android 6 Tutorial 第四堂(3)讀取裝置目前的位置 - Google Services Location

2016年4月11日 星期一

Android 加入導覽說明頁面

幫自己的 APP 加上一個有 fu 的導覽頁面是個很重要的事情,因為程式本身沒 fu

我一直在尋找一個超簡單到我都會用的套件可以快速製作出來。終於被我找到了!!

網址在這:
https://github.com/PaoloRotolo/AppIntro

只需要安裝上去後,新增一個 Activity 繼承 AppIntro 在呼叫的同時直接填入內容就完成了

安裝


1.加入 build.gradle:
repositories {
    mavenCentral()
}

dependencies {
  compile 'com.github.paolorotolo:appintro:3.4.0'
}


2.加入 Manifest.xml:
<activity android:name="com.example.example.intro"
    android:label="@string/app_intro" />


建立一個 Activity
public class MyIntro extends AppIntro
當我們繼承 AppIntro 後 Android Studio 會把 onSkipPressed, onDonePressed, onSlideChanged, onNextPressed 這些動作都預先加上去。



既然我們要簡單的話就給他真的用最簡單的方法吧!基本上他是一個 Activity 去跑多個 frament 的概念。不過他可以直接讓我們用預設的所以我們只要改我們自己要顯示的資料即可喔。
 addSlide(AppIntroFragment.newInstance(title, description, image, background_colour));
這樣一行就是直接做一頁了, addSlide(AppIntroFragment.newInstance("我是標題", "我是說明文字",顯示圖檔, Color.parseColor("#背景色碼")));