구글플레이의 앱이 업데이트가 되고 나서 기존 사용자에게 업데이트 알림을 주고싶다면?


여러가지 방법이 있지만 구글 플레이 현재 버전 정보를 String 값으로 읽어와 앱의 manifest의 Versionname과 비교하는 방법으로 사용해 봤습니다




1. 구글플레이 버전정보를 읽어 String으로 변환하기 위한 jsoup.jar 라이브 러리 사용합니다.


jar 파일 import!


[ 다운로드 링크 https://jsoup.org/ ]



2. 클래스 생성 : 구글플레이의 버전 정보를 읽어 내는 클래스입니다.


 public class MarketVersionChecker {

public static String getMarketVersion(String packageName) {

try {


Document doc = Jsoup.connect(

"https://play.google.com/store/apps/details?id="

+ packageName).get();

Elements Version = doc.select(".content");

 

for (Element mElement : Version) {

if (mElement.attr("itemprop").equals("softwareVersion")) {

return mElement.text().trim();

}

}

 

} catch (IOException ex) {

ex.printStackTrace();

}

 

return null;

}

 

public static String getMarketVersionFast(String packageName) {

String mData = "", mVer = null;

 

try {

URL mUrl = new URL("https://play.google.com/store/apps/details?id="

+ packageName);

HttpURLConnection mConnection = (HttpURLConnection) mUrl

.openConnection();

 

if (mConnection == null)

return null;

 

mConnection.setConnectTimeout(5000);

mConnection.setUseCaches(false);

mConnection.setDoOutput(true);

 

if (mConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {

BufferedReader mReader = new BufferedReader(

new InputStreamReader(mConnection.getInputStream()));

 

while (true) {

String line = mReader.readLine();

if (line == null)

break;

mData += line;

}

 

mReader.close();

}

 

mConnection.disconnect();

 

} catch (Exception ex) {

ex.printStackTrace();

return null;

}

 

String startToken = "softwareVersion\">";

String endToken = "<";

int index = mData.indexOf(startToken);

 

if (index == -1) {

mVer = null;

 

} else {

mVer = mData.substring(index + startToken.length(), index

+ startToken.length() + 100);

mVer = mVer.substring(0, mVer.indexOf(endToken)).trim();

}

 

return mVer;

}



3. MarketVersionChecker 클래스의 함수 활용!


   Tip : onCreate에서 사용하기 위해선 Thread 안에서 사용해야 함수를 이용할 수 있기에 Thread를 사용하시면 됩니다.



/////////////////////////업데이트 된지 안된지, 스토어 버전 값 읽어서 비교

new Thread(){


public void run(){


store_version MarketVersionChecker.getMarketVersion(getPackageName()); // 마켓 스토어의 현재 버전 값


try {


device_version getPackageManager().getPackageInfo(getPackageName(), 0).versionName//manifest의 버전 값 확인


System.out.println("버전:"+device_version);

System.out.println("스토어버전:"+store_version);


} catch (PackageManager.NameNotFoundException e) {

e.printStackTrace();

}

 

if (store_version.compareTo(device_version) > 0) {

 

System.out.println("업데이트필요");

 

//업데이트 필요 할 때 업데이트 연결 UI로 보내기

 Intent i = new Intent(this, update.class);

 startActivity(i);


} else {

// 업데이트 불필요

System.out.println("업데이트불필요");

}

}.start();

///////////////////////////// 




업데이트가 필요할 때 업데이트 알림 UI나 다른 이벤트들을 띄워주면 완료


많이 사용하는 구글 플레이 연결


 String url = "market://details?id=" + "";

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(i);










+ Recent posts