前言:
手機唯一識別碼—每一台手機上都是獨一無二的。
應用場景可以在Google上看到,當你在A手機綁定了Google帳號,你只要拿其他手機登入你的帳號,Google馬上會判別這不是你之前常用的A手機的識別碼,然後發訊息提醒你『你有登入訊息唷!是否被盜帳號了呢?』
版本號碼—
就是要拿取你的VersionName。
通常VersionName是給使用者看的,VersionCode是給開發者自己更新版本確認用的。
重點程式碼:
獲取手機識別碼
//DeviceId @SuppressLint("HardwareIds") public static String getDeviceId() { UUID uuid = null; String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); try { uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return uuid.toString(); }獲取app版本號碼VersionName
//獲取VersionName public static String getAppVersion() { String version = ""; PackageManager manager = context.getPackageManager(); try { PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); version = info.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return version; } //獲取VersionCode public static String getAppVersionNumber() { String version = ""; PackageManager manager = context.getPackageManager(); try { PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); version = String.valueOf(info.versionCode); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return version; }
通常以上方法是複寫在自己的Application內,因為實作方便,就在Activity內做示範。
實作:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ellipsize.kaiser.version.MainActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical"> <TextView android:id="@+id/deivceId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="deviceiD" /> <TextView android:id="@+id/versionCode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="deviceiD" /> <TextView android:id="@+id/versionNumber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="deviceiD" /> </LinearLayout> </RelativeLayout>strings.xml
<resources> <string name="app_name">Version</string> <string name="Deviceid">DeviceId : %s</string> <string name="VersionName">VersionName : %s</string> <string name="VersionCode">VersionCode : %s</string> </resources>
MainActivity.java
public class MainActivity extends AppCompatActivity { public static Context context; private TextView DeviceID, versionName, versionCode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; DeviceID = (TextView) findViewById(R.id.deivceId); versionCode = (TextView) findViewById(R.id.versionCode); versionName = (TextView) findViewById(R.id.versionNumber); DeviceID.setText(getString(R.string.Deviceid, getDeviceId())); versionName.setText(getString(R.string.VersionName, getAppVersion())); versionCode.setText(getString(R.string.VersionCode, getAppVersionName())); } //DeviceId @SuppressLint("HardwareIds") public static String getDeviceId() { UUID uuid = null; String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); try { uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return uuid.toString(); } public static String getAppVersion() { String version = ""; PackageManager manager = context.getPackageManager(); try { PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); version = info.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return version; } public static String getAppVersionName() { String version = ""; PackageManager manager = context.getPackageManager(); try { PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0); version = String.valueOf(info.versionName); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return version; } }
完成囉!
很簡單就不給Demo了。
沒有留言:
張貼留言