Android 침묵 설치 구현
3257 단어 Android
public void install(@NonNull Context context,@NonNull String path) throws Exception {
File file=new File(path);
String apkName=path.substring(path.lastIndexOf(File.separator)+1,path.lastIndexOf(".apk"));
// PackageInstaller
PackageInstaller packageInstaller = context.getPackageManager()
.getPackageInstaller();
PackageInstaller.SessionParams params=new PackageInstaller
.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
PackageInstaller.Session session=null;
OutputStream outputStream=null;
FileInputStream inputStream=null;
try {
// Session
int sessionId = packageInstaller.createSession(params);
// Session
session=packageInstaller.openSession(sessionId);
// , apk session
outputStream = session.openWrite(apkName, 0, -1);
inputStream=new FileInputStream(file);
byte[] buffer=new byte[4096];
int n;
// apk session
while ((n=inputStream.read(buffer))>0){
outputStream.write(buffer,0,n);
}
// , “files still open”
inputStream.close();
inputStream=null;
outputStream.flush();
outputStream.close();
outputStream=null;
// intent, activity
Intent intent=new Intent();
PendingIntent pendingIntent=PendingIntent.getActivity(mContext,0,intent,0);
IntentSender intentSender = pendingIntent.getIntentSender();
//
session.commit(intentSender);
} catch (IOException e) {
throw new RuntimeException("Couldn't install package", e);
} catch (RuntimeException e) {
if (session != null) {
session.abandon();
}
throw e;
}finally {
closeStream(inputStream);
closeStream(outputStream);
}
}
설명 이 명확 하 게 설명 되 어 있 으 면 더 이상 설명 하지 않 습 니 다.설치 과정의 상 태 를 가 져 오 려 면 createSession 전에 Package Inataller 에 Session Callback 을 등록 하여 가 져 올 수 있 습 니 다.
packageInstaller.registerSessionCallback(new PackageInstaller.SessionCallback() {
@Override
public void onCreated(int sessionId) {
}
@Override
public void onBadgingChanged(int sessionId) {
}
@Override
public void onActiveChanged(int sessionId, boolean active) {
}
@Override
public void onProgressChanged(int sessionId, float progress) {
}
@Override
public void onFinished(int sessionId, boolean success) {
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.