안드로이드 개발 질문/답변
(글 수 45,052)
public class sss extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView MyText = new TextView(this);
String str = "";
Cursor cursor = null;
try {
Uri mSmsQueryUri = Uri.parse("content://com.my.provider/");
cursor = getContentResolver().query(mSmsQueryUri, null, null, null, null);
if (cursor == null) {
MyText.setText("자료없음");
setContentView(MyText);
}else{
for (boolean hasData = cursor.moveToFirst(); hasData; hasData = cursor.moveToNext()) {
final String body1 = cursor.getString(cursor.getColumnIndexOrThrow("name"));
str += body1 + "\n";
}
MyText.setText(str);
setContentView(MyText);
}
} catch (Exception e) {
MyText.setText("송신 어플 없음");
setContentView(MyText);
} finally {
cursor.close();
}
}
}예전에도 올렸던 질문인데 해결이 안되어 다시 올려봅니다.
두개의 어플 사이에서 데이터를 넘기는 상황입니다.
송신용 어플을 설치하지 않았을 경우 메세지를 표시하기 원하는데 try,catch로 묶어도 그냥 어플이 죽어버리고 멈추네요.
CP를 통해 자료를 넘겨받는중에 정의되지 않은 URI를 호출했을때 죽지 않고 예외처리되는 방법이 있을까요?
송신용 어플을 설치하지 않았을 경우 메세지를 표시하기 원하는데 try,catch로 묶어도 그냥 어플이 죽어버리고 멈추네요.
CP를 통해 자료를 넘겨받는중에 정의되지 않은 URI를 호출했을때 죽지 않고 예외처리되는 방법이 있을까요?
2010.12.24 16:59:44
죽는 부분이 어디인가요?
현재 코드 대로라면 잘못된 uri를 가지고 cursor를 가져오면
cursor는 null이 되고 finally 에서 cursor.close() 를 하는데.. cursor가 null이기 때문에 역시 예외가 발생합니다.
finally에 if (cursor != null) 을 추가해 보세요
2010.12.24 17:29:59
해당 어플이 설치되었는지 확인하시는게 좋을 듯 하네요.
Context context = Activity.createPackageContext(pName, 0);
하시면 해당 패키지명으로 어플이 없으면 Exception이 날라올겁니다.
아니면
PackageManager pm = Activity.getPackageManager();
List<PackageInfo> list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
for (PackageInfo packageInfo : list) {
String pName = packageInfo.packageName;
}
이거로 하셔서 하나하나 확인하셔도 됩니다.
어플이 없는 경우 마켓으로 보내는 부분은
http://developer.android.com/guide/publishing/publishing.html
페이지 하단부에 있습니다.
Context context = Activity.createPackageContext(pName, 0);
하시면 해당 패키지명으로 어플이 없으면 Exception이 날라올겁니다.
아니면
PackageManager pm = Activity.getPackageManager();
List<PackageInfo> list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
for (PackageInfo packageInfo : list) {
String pName = packageInfo.packageName;
}
이거로 하셔서 하나하나 확인하셔도 됩니다.
어플이 없는 경우 마켓으로 보내는 부분은
http://developer.android.com/guide/publishing/publishing.html
페이지 하단부에 있습니다.



