2013-08-19 59 views

回答

0

請注意,這不適用於通過Google發佈測試版。這是爲了你自己做的。

我現在正在測試一系列中文課程應用程序,並決定使用電話號碼來允許測試者訪問。請注意,您不能總是從電話設備獲取電話號碼。但主要是你可以。下面是執行檢查類:

package org.this_voice.ruzhechu01; 

import android.telephony.TelephonyManager; 
import android.content.Context; 
import java.util.Set; 
import java.util.HashSet; 
import java.util.Arrays; 


public class BetaPhoneCheck extends Object { 

private String accessGranted = "false"; 
private Context appContext = null; 
private static final Set<String> ACCESS_LIST = new HashSet<String> (Arrays.asList(
    new String[] {"2074583598"})); 

public BetaPhoneCheck(Context context) { 
    appContext = context; 
} 


public boolean hasAccess(){ 
    String thisNumber = getDevicePhoneNumber(); 
    thisNumber = thisNumber.replace("-", ""); //FIXME use fhandler's regex code 
    return ACCESS_LIST.contains(thisNumber); 
} 


/* 
* not guaranteed to work... 
*/ 
private String getDevicePhoneNumber() { 
    TelephonyManager mTelephonyMgr; 
    mTelephonyMgr = (TelephonyManager) 
     appContext.getSystemService(Context.TELEPHONY_SERVICE); 
    return mTelephonyMgr.getLine1Number(); 
} 

} 

下面是訪問失敗佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

<TextView 
    android:id="@+id/title" 
    style="?textTitle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/app_name" /> 

<TextView 
    android:id="@+id/textView1" 
    style="?textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/no_access" /> 

<Button 
    style="?button" 
    android:id="@+id/accessExit" 
    android:layout_width="fill_parent" 
    android:layout_height="36dp" 
    android:text="Exit" 
    android:onClick="exit" /> 


</LinearLayout> 

下面是的strings.xml:

<string name="no_access">BETA ACCESS FAILURE\n\nMake sure your phone is in service.\n\nEmail developer if you are unable to access your Beta App.\n\n</string> 

,這裏是從主力的onCreate代碼活動:

boolean hasAccess = new BetaPhoneCheck(this).hasAccess(); 

    if (! hasAccess){ 
     setContentView(R.layout.no_access); 
    } else { 

而對於清單燙髮:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

希望當他們想推動應用出來公測這節省了人們一些時間。請享用。

+0

我不確定此檢查是否符合Google Play商店規則和TOS! – Pavlos

+0

不幸的是,getLine1Number並不總是有效。它只適用於一些運營商。而@Pavlos- Google Play並非唯一的應用商店。關於我的大部分beta測試版都沒有經過任何應用商店,我通過電子郵件和sideload提交。 –

0

我已經要求人們向我發送他們的UUID,並在啓動Activity中對UUID進行檢查。儘管如此,這並不能擴展到大量用戶。如果你想這樣做,你需要一個web服務來檢查UUID與數據庫中允許的id的列表。

+0

查看後,手機上沒有任何內容標記爲UUID。你以編程方式拉它。因此,電話或無線MAC地址,除非有人願意對沒有技術傾向的測試用戶進行大量解釋。 –

相關問題