當前位置:首頁 » 安卓系統 » androidstringchar

androidstringchar

發布時間: 2024-11-15 13:45:00

Ⅰ Android里的CharSequence是不是就是String如果是, 為什麼不直接使用String

CharSequence是一個介面,String是一個實現了CharSequence介面的類。

在JDK1.4中,引入了CharSequence介面,實現了這個介面的類有:CharBuffer、String、StringBuffer、StringBuilder這個四個類。

Ⅱ android studio中string怎麼轉char數組

用指針,
遍歷string,把每一個*p賦值給char[I],遍歷結束的時候,char數組裡面就保存了string的每個字母.

char *p = string;
for (int i=0, *p; i<len(string); i++, *p++)
{
char[I] = *p;
} 主要部分就是這樣的了.

Ⅲ 如何獲取android 簽名信息

android中有時候需要獲取應用的簽名信息,簽名信息一般有:公鑰,演算法名,MD5值,序列號。要想獲取這些信息首先該APK應用要有系統許可權。

1. 在配置文件里添加系統許可權:android:sharedUserId="android.uid.system"

2. 獲取簽名信息的字元信息:

String signature_key = "";

try{

PackageInfo packageInfo = context.getPackageManager().getPackageInfo(pkgName,
PackageManager.GET_SIGNATURES);

Signature[] signatures =
packageInfo.signatures;

SignatureKey.parseSignature(signatures[0].toByteArray());

} catch (NameNotFoundException e) {

e.printStackTrace();

} catch (NullPointerException e) {

e.printStackTrace();

}

(1).其中packageInfo 得到的是指定包名的簽名信息的字元串。另提及多說一句:在程序中我們一般使用

List list =
mPackageManager.getInstalledPackages(0);來得到所有的安裝包的信息,這其中包括應用名,包名,大小....

(2).
其中[]signatures里是存放的簽名的字元串數組。我們一般取用第一個signatures[0]來做為該應用的簽名信息。這里有一個疑惑就是為什麼得到的是一個字元串的數組列表,而不是一個字元串,也有的開發者採用:

StringBuilder builder = new StringBuilder();

for(Signature sign: signatures
){
builder.append(sign.toCharsString());
builder.append("/n");
}來得到所有的簽名信息。在這里我驗證過,signatures
的長度為1,所以指定apk的簽名信息就為signatures[0]。

至於第二種方法有待發現。

3 .獲取簽名的MD5值

public static final String getMD5String(byte[] paramArrayOfByte)
{
char[] asciiTable = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
97, 98, 99, 100, 101, 102 }; // ascii表對應的數字和字元的編碼
try
{
MessageDigest md5MessageDigest =
MessageDigest.getInstance("MD5");
md5MessageDigest.update(paramArrayOfByte);//
byte[]
tempByte = md5MessageDigest.digest();
int i =
tempByte.length;
char[] tempChar = new char[i *
2];
int j = 0;
int k =
0;
while (true) { //
將二進制數組轉換成字元串
if (j >= i)
{
return new
String(tempChar);
}
int m
= tempByte[j];
int n = k +
1;
tempChar[k] = asciiTable[(0xF & m >>>
4)];
k = n +
1;
tempChar[n] = asciiTable[(m &
0xF)];
j++;
}
}
catch (Exception e)
{
e.printStackTrace();
}
return
null;
}

(1). 其中參數就是上一步得到的簽名的byte數組。

4. 獲取公鑰,簽名演算法,簽名序列號

public static void parseSignature(byte[] signature)
{
try
{
CertificateFactory
certFactory =
CertificateFactory.getInstance("X.509");

X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new
ByteArrayInputStream(signature));

String pubKey =
cert.getPublicKey().toString(); //公鑰

String signNumber =
cert.getSerialNumber().toString();

System.out.println("signName:" +
cert.getSigAlgName());//演算法名

System.out.println("pubKey:" +
pubKey);

System.out.println("signNumber:" +
signNumber);//證書序列編號

System.out.println("subjectDN:"+cert.getSubjectDN().toString());

} catch (CertificateException e)
{

e.printStackTrace();
}
}

5. 電腦查看APK簽名信息

查看三方應用或是系統應用簽名
用winrar打開待查看的apk,將其中META-INF文件夾解壓出來,得到其中的CERT.RSA文件
1.keytool
-printcert -file META-INF/CERT.RSA
命令是:keytool -printcert -file
<簽名文件RSA的路徑>
2.jarsigner -verify -verbose -certs Superuser.apk
此條未驗證成功

Ⅳ Intent傳遞數據時,可以傳遞哪些類型數據

在Android應用的開發中,如果我們需要在不同的模塊(比如不同的Activity之間)之間傳遞數據,通常有以下兩種方法:

1. 利用Intent對象攜帶數據

通過查詢Intent/Bundle的API文檔,我們可以獲知,Intent/Bundle支持傳遞基本類型的數據和基本類型的數組數據,以及String/CharSequence類型的數據和String/CharSequence類型的數組數據。而對於其它類型的數據貌似無能為力,其實不然,我們可以在Intent/Bundle的API中看到Intent/Bundle還可以傳遞Parcelable(包裹化,郵包)和Serializable(序列化)類型的數據,以及它們的數組/列表數據。

所以要讓非基本類型和非String/CharSequence類型的數據通過Intent/Bundle來進行傳輸,我們就需要在數據類型中實現Parcelable介面或是Serializable介面。

1.1 利用Parcelable介面實現數據通過Intent/Bundle進行傳遞

/**
* 代表一個人的信息
* @author gansc
*/
public class PersonInfo implements Parcelable
{
public String iName; // 人名
publicint iSex; // 性別
public String iId; // 身份證號碼
public String iMobileNumber; // 手機號碼
public String iEMailAddr; // 郵箱地址
// From Parcelable
@Override
publicint describeContents()
{
return0;
}
// From Parcelable
// 保存到包裹中
@Override
publicvoid writeToParcel(Parcel dest, int flags)
{
dest.writeString(iName);
dest.writeInt(iSex);
dest.writeString(iId);
dest.writeString(iMobileNumber);
dest.writeString(iEMailAddr);
}
// 實現Parcelable介面的類型中,必須有一個實現了Parcelable.Creator介面的靜態常量成員欄位,
// 並且它的名字必須為CREATOR的
publicstaticfinal Parcelable.Creator<PersonInfo> CREATOR
=new Parcelable.Creator<PersonInfo>()
{
// From Parcelable.Creator
@Override
public PersonInfo createFromParcel(Parcel in)
{
PersonInfo brief =new PersonInfo();
// 從包裹中讀出數據
brief.iName = in.readString();
brief.iSex = in.readInt();
brief.iId = in.readString();
brief.iMobileNumber = in.readString();
brief.iEMailAddr = in.readString();
return brief;
}
// From Parcelable.Creator
@Override
public PersonInfo[] newArray(int size)
{
returnnew PersonInfo[size];
}
};
}

Ⅳ 如何在Android中的String使用中文

public class Conversion {

/**
* 中文轉unicode
* @param str
* @return 反回unicode編碼
*/
public String chinaToUnicode(String str)
{
String result = null;
for (int i = 0; i < str.length(); i++)
{
int chr1 = (char) str.charAt(i);
result += "\\u" + Integer.toHexString(chr1);
}
return result;
}

/**
* unicode轉中文
* @param str
* @return 中文
*/
public void unicodeToChinese(String str)
{

for(char c : str.toCharArray())

System.out.print(c);

}

public static void main(String args[])
{
//unicode轉中文
String str = "\u767b\u5f55\u793e\u533a";
Conversion con = new Conversion();

con.unicodeToChinese(str);
//for(char c : str.toCharArray())
//System.out.print(c);

}

}

Ⅵ android String.valueOf(ch).getBytes("GBK");到底何意

String.valueOf(ch)表示將字元ch轉換為字元串
String的getBytes(String charset)表示使用指定的字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。
這里的GBK和UTF-8指的就是字元集的名字,那麼什麼是字元集:是抽象字元集合和整數集合之間的映射關系。就好像字典一樣,我每次只告訴計算機這個字在哪一頁(假設一頁只有一個漢字),計算機需要顯示的時候就去查字典。這有什麼好處呢?第一大家使用一樣的字典那麼顯示結果就是一樣的,第二計算機中一個字元只需要一個整數來表示就行了,只在需要顯示的時候才去查字典,非常省空間與流量。
這里再解釋兩個概念:編碼與解碼。編碼:通過一個字元在字典里找到他的位置,用這個位置來表示該字元。解碼:通過一個位置在一個字典里找到表示的字元是什麼。
那麼現在就可以解釋為什麼上面的轉換結果不一樣了,GBK和UTF-8是兩本不同的字典,而getBytes(String charset)是編碼過程,那麼同一個漢字在不同字典的位置就不一樣,返回的頁數也就不一樣了。
該怎麼用?只要你能保證編碼和解碼時使用的是同一個字典(字元集),那麼你用哪一個都沒有錯,但是很多時候在解碼時會使用默認的字元集(中文xp默認是GBK,而台灣繁體中文默認是Big5),所以這時候你就要注意你的編碼方式是否對應

熱點內容
miui4相當於安卓什麼系統 發布:2024-11-15 15:37:54 瀏覽:708
rc4android 發布:2024-11-15 15:27:25 瀏覽:741
電腦伺服器機箱圖片 發布:2024-11-15 15:27:18 瀏覽:114
網頁緩存文件提取 發布:2024-11-15 15:24:42 瀏覽:144
sqlserver提高 發布:2024-11-15 15:24:40 瀏覽:659
太空工程師編程模塊 發布:2024-11-15 15:15:27 瀏覽:68
apache壓縮 發布:2024-11-15 15:11:54 瀏覽:245
java比較三個數 發布:2024-11-15 15:08:39 瀏覽:835
fml加密 發布:2024-11-15 15:05:56 瀏覽:883
存儲上市龍頭 發布:2024-11-15 14:52:14 瀏覽:38