BroadCastReceiver를 사용하는 클래스를 사용하는 응용 프로그램을 만들고 있으므로 응용 프로그램을 설치하고 제거 할 때 catch 할 수 있습니다. 의도는 잘 받아 들여지고 onReceive의 코드는 꼭 실행해야합니다. 그러나 문제는 새로운 PackageManger를 인스턴스화하려고 할 때 오류 메시지가 표시된다는 것입니다. 오류 : "PackageManager 유형을 인스턴스화 할 수 없습니다." 나는 모든 변형을 거의 시도해 봤지만 그 효과를 얻지 못했습니다.PackageManager를 인스턴스화 할 수 없습니다.
내 코드 :
package com.my.package;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.util.Log;
public class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Uri datauri = intent.getData();
String uri = datauri.toString();
PackageManager pm = new PackageManager();
//pm.getApplicationInfo(uri); //broken
test(datauri); //works fine
}//end method
public void test(Uri uri){
Log.d("test", "data: "+uri);
}//end method
}// end class
보통 스택 트레이스는 몇 줄, 당신은 아마도 몇 가지 의미가있다, 또한 전체 스택 트레이스를 게시 할 수 있습니다 나머지 줄의 정보. – ilomambo
@ilomambo : 답장을 보내 주셔서 감사합니다. 실제로 코드를 실행하는 데 신경 쓰지 않았습니다. imran khan의 솔루션을 사용했는데,이 작품은 – slinden77