我已经在我的Android应用程序中集成了Snapchat的Creative Kit。处理之后,我从服务器收到了字节数组形式的图像,将其保存到磁盘,然后将文件发送到Snapchat的Creative Kit,如下所示。
private fun downloadImage(
fileName: String,
imageByteArray: ByteArray?): Uri? {
val state = Environment.getExternalStorageState()
if (Environment.MEDIA_MOUNTED == state) {
val downloadDir = File(
Environment.getExternalStorageDirectory(), context?.getString(R.string.app_name)
)
if (!downloadDir.isDirectory) {
downloadDir.mkdirs()
}
val file = File(downloadDir, fileName)
var ostream: FileOutputStream? = null
try {
ostream = FileOutputStream(file)
ostream.write(imageByteArray)
ostream.flush()
ostream.close()
}
} catch (e: IOException) {
e.printStackTrace()
}
val snapCreativeKitApi = SnapCreative.getApi(context!!)
val snapMediaFactory = SnapCreative.getMediaFactory(context!!)
lateinit var snapPhotoFile: SnapPhotoFile
try {
snapPhotoFile = snapMediaFactory.getSnapPhotoFromFile(file)
} catch (e: SnapMediaSizeException) …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码从通话记录中获取最近通话的详细信息。
public static CallDetails getLastCallDetails(Context context) {
CallDetails callDetails = new CallDetails();
Uri contacts = CallLog.Calls.CONTENT_URI;
try {
Cursor managedCursor = context.getContentResolver().query(contacts, null, null, null, android.provider.CallLog.Calls.DATE + " DESC limit 1;");
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int incomingtype = managedCursor.getColumnIndex(String.valueOf(CallLog.Calls.INCOMING_TYPE));
while (managedCursor.moveToNext()) {
String callType;
String phNumber = managedCursor.getString(number);
String callerName = getContactName(context, phNumber);
if(incomingtype == -1){
callType = "incoming";
}
else {
callType = "outgoing";
}
String callDate = managedCursor.getString(date);
String callDayTime …Run Code Online (Sandbox Code Playgroud) 我正在使用 Jetpack Navigation 来处理 Fragment 的导航。按照文档操作后,当我运行该应用程序时,出现以下错误。
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.navigation.fragment.NavHostFragment"
Run Code Online (Sandbox Code Playgroud)
构建.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "com.meditab.imspatient"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
def nav_version = "1.0.0-alpha01"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.constraintlayout:constraintlayout:1.1.0' // Constraint layout
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // Kotlin
// Anko
implementation "org.jetbrains.anko:anko-commons:$anko_version" // …Run Code Online (Sandbox Code Playgroud) android kotlin android-navigation android-jetpack android-architecture-navigation
我正在使用Material Design Components中的新Bottom App Bar。我试图在底部应用栏的顶部给阴影,就像Google Tasks应用中的阴影一样,如下所示。
我尝试同时使用android:elevation和app:elevation属性。请帮忙。
我有一个活动,每次呼叫结束时都会调用它.此活动低于AsyncTask.
UploadRecordings uploadRecordings = new UploadRecordings();
uploadRecordings.execute(context);
Run Code Online (Sandbox Code Playgroud)
现在,当我每次都有新的AysncTask创建时,我会一个接一个地调用.但Android将AsyncTask的数量限制为5.所以问题是我想检查AsyncTask是否已经在运行,如果发现正在运行,则不要创建新的AsyncTask.如果没有运行AsyncTask,我想创建一个新的AsyncTask.
任何帮助都要得到赞赏.
我的应用程序中有一个主要活动,其中包含Material Design Components中新的Bottom App Bar。在用户交互时,我替换了不同的片段。
为了使用户知道他们在应用程序中的当前位置,我决定将底部应用程序栏的标题设置为与片段的标题相同。但是,我无法设置标题,并且看到实现后,发现“底部应用栏不能具有标题”。
我想知道在这种情况下如何使用户知道他在应用程序中的位置,或者是否有任何方法可以设置底部应用程序栏的标题。
我在Kotlin中有RecyclerView适配器,当用户单击categoryPhoto时,我想打开一个新活动。我应该如何实施呢?
class CategoryAdapter(private val categoryList: List<Category>, private val context: Context) : RecyclerView.Adapter<CategoryAdapter.MyViewHolder>() {
class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var categoryName = view.text_view_category_name
var categoryPhoto = view.image_view_category
var cardView = view.card_view_category
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MyViewHolder(parent.inflate(R.layout.category_list_row))
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val category = categoryList[position]
// Set height of cardview based on screen width
val displayMetrics = context.resources.displayMetrics
val finalHeight = displayMetrics.widthPixels / 2
holder.cardView.layoutParams.height = finalHeight
holder.categoryName.text = category.oc
holder.categoryPhoto.loadUrl(category.icon)
}
override fun …Run Code Online (Sandbox Code Playgroud) android ×7
kotlin ×2
android-architecture-navigation ×1
calllog ×1
java ×1
performance ×1
snapchat ×1
task ×1